首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果两个pandas列值的差值大于Pandas中的列值,则将其添加到新行中

如果两个pandas列值的差值大于Pandas中的列值,则将其添加到新行中
EN

Stack Overflow用户
提问于 2020-02-11 19:22:40
回答 1查看 77关注 0票数 1

“这是我有的数据样本”“

代码语言:javascript
运行
复制
PERIOD GROUP USER_COUNT REGION
50    A     55            AX
25    A     20            AX
30    B     33            BY
40    C     10            CZ

预期输出

代码语言:javascript
运行
复制
PERIOD GROUP USER_COUNT REGION
50    A        50         AX
50    A         5         AX
25    A        20         AX
30    B        30         BY
30    B        3          BY
40    C        10         CZ
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-11 19:30:51

使用:

代码语言:javascript
运行
复制
#get difference of columns
s = df['USER_COUNT'].sub(df['PERIOD']) 
#mask for positive subtract values
m = s > 0

#subtract of original data ony matched rows of column VAL2
df1 = df.assign(USER_COUNT = lambda x: x['USER_COUNT'].sub(s[m], fill_value=0))
#overwrite matched rows
df2 = df[m].assign(USER_COUNT = s[m])

#join together and sorting by only stable sorting - mergesort
df3 = (pd.concat([df1, df2])
         .sort_index(kind='mergesort')
         .reset_index(drop=True)
         .astype(df.dtypes))
print (df3)
   PERIOD GROUP  USER_COUNT REGION
0      50     A          50     AX
1      50     A           5     AX
2      25     A          20     AX
3      30     B          30     BY
4      30     B           3     BY
5      40     C          10     CZ
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60167717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档