我对熊猫比较陌生,我不知道解决我的问题的最佳方法。好吧,我有一个 df :一个索引,以及一个名为“Data”的列和一个名为“sum”的空列中的数据。
我需要帮助来创建一个函数,以在列“总和”中添加“数据”列的可变行组的总和。分组标准是组中不应有空行。
这里有一个例子:
index Data Sum
0 1
1 1 2
2
3
4 1
5 1
6 1 3
7
8 1
9 1 2
10
11 1
12 1
13 1
14 1
15 1 5
16
17 1 1
18
19 1 1
20
Run Code Online (Sandbox Code Playgroud)
如您所见,'Data' 中每组数据的长度是可变的,可以是一行,也可以是任意数量的行。总和必须在组的末尾。例如:“数据”列的第 4、5、6 行组的总和应位于“总和”列的第 6 行。
任何见解将不胜感激。
更新
通过实施ansev建议的方法3解决了该问题。但是由于主程序的变化,每个块的总和,现在需要在每个块的开始处(如果块有多于一行)。然后我使用该df = df.iloc[::-1]
指令两次以反转列并再次恢复正常。非常感谢!!!!!
df = df.iloc[::-1]
blocks = df['Data'].isnull().cumsum()
m = blocks.duplicated(keep='last')
df['Sum'] = df.groupby(blocks)['Data'].cumsum().mask(m)
df = df.iloc[::-1]
print(df)
Data Sum …
Run Code Online (Sandbox Code Playgroud)