我无法找到一种好方法来查找列中的所有负条目并将它们向上移动到列中,将它们与现有条目相加(即从当前条目中减去负条目),直到所有值都是正值。
重要的是,最终数据帧没有负值 & 所有以前的负条目 = 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/