python - 将负行值与前一行 Pandas 相加

标签 python python-3.x pandas dataframe

我无法找到一种好方法来查找列中的所有负条目并将它们向上移动到列中,将它们与现有条目相加(即从当前条目中减去负条目),直到所有值都是正值。
重要的是,最终数据帧没有负值 & 所有以前的负条目 = 0。此外,该表是重复的,这意味着我需要根据 ID 和条目汇总结果(仅对相同 ID 的条目进行求和)。
基于此处已提供的表格:
展示:


ID
日期
参赛作品


1
2013年
100

1
2014年
0

1
2015年
60

1
2016年
-30

1
2017年
0

1
2018年
50

1
2019年
0

1
2020年
-20

2
2013年
100

2
2014年
0

2
2015年
60

2
2016年
-30

2
2017年
0

2
2018年
50

2
2019年
0

2
2020年
-20


期望:


ID
日期
参赛作品


1
2013年
100

1
2014年
0

1
2015年
30

1
2016年
0

1
2017年
0

1
2018年
30

1
2019年
0

1
2020年
0

2
2013年
100

2
2014年
0

2
2015年
30

2
2016年
0

2
2017年
0

2
2018年
30

2
2019年
0

2
2020年
0

最佳答案

您可以在创建组后尝试反向 cumsum,然后屏蔽:

s = df['Entries'].gt(0).cumsum()
u= df['Entries'][::-1].groupby(s).cumsum().mask(df['Entries'].le(0),0)
out = df.assign(New_Entries=u) # you can assign to the original column too.
print(out)
    ID  Date  Entries  New_Entries
0    1  2013      100          100
1    1  2014        0            0
2    1  2015       60           30
3    1  2016      -30            0
4    1  2017        0            0
5    1  2018       50           30
6    1  2019        0            0
7    1  2020      -20            0
8    2  2013      100          100
9    2  2014        0            0
10   2  2015       60           30
11   2  2016      -30            0
12   2  2017        0            0
13   2  2018       50           30
14   2  2019        0            0
15   2  2020      -20            0

关于python - 将负行值与前一行 Pandas 相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65559556/

相关文章:

python - 从 Django DateTimeField 获取日期

python - seaborn swarmplot 中的水平图

python - 如何在 Python 中显示 AxesSubplot?

python - 如果 Python 一次执行一行,为什么它可以在变量声明之前看到它们?

Python 十进制 modf

python - 跨观测值和年份的运算返回 NaN

pandas - 将 Pandas 数据框变成内存中的类似文件的对象?

python - argparse:在某些情况下将参数从位置更改为可选

python - 在 Mac 上安装 python3 后 pip 无法工作

Pandas 数据框检查列中的日期是否小于自定义日期?