我有DataFrame:
df = np.DataFrame = {'Year' : [2010, 2011, 2012, 2013, 1922, 1923, 1924, 1925],
'ID' : ['A', 'A', 'A', 'A', 'B', 'B', 'B'],
'Data1' : [1, 2, 3, 4, 2, 3, 4],
'Data2' : [2, 2, 2, 2, 3, 3, 3]}
df
Year ID Data1 Data2
2010 A 1 2
2011 A 2 2
2012 A 3 2
2013 A 4 2
1922 B 2 3
1923 B 3 3
1924 B 4 3
我想对每个ID总计Data1和Data2进行总计,以便每年给出该年之前所有Data1或Data2的总和。
最终,我希望我的DataFrame看起来像这样:
df
Year ID Data1 Data2
2010 A 1 2
2011 A 3 4
2012 A 6 6
2013 A 10 8
1922 B 2 3
1923 B 5 6
1924 B 9 9
我有超过10万行,因此,如果可能的话,无需迭代即可完成此操作。
答案 0 :(得分:1)
使用assign
和groupby
df = df.assign(**df.groupby('ID')['Data1', "Data2"].cumsum())
print(df)
Year ID Data1 Data2
0 2010 A 1 2
1 2011 A 3 4
2 2012 A 6 6
3 2013 A 10 8
4 1922 B 2 3
5 1923 B 5 6
6 1924 B 9 9