我有一个带有一些列的数据框,我想以一种有效的方式应用以下转换。
给出以下数据框:
C D
===========
Nan 10
0 22
2 280
4 250
6 270
应该以这样的方式进行转换,我可以获得以下输出:
C D
===========
Nan 10
0 22
2 280
6 252
12 276
请注意:
C [i] = C [i] + C [i-1] + ... + C [ 0]
和
D [i] = D [i] + C [i-1]
应过滤NaN值。
谢谢!
答案 0 :(得分:1)
IIUC,您需要:
df['C'] = df['C'].add(df['C'].shift(1).fillna(0))
df['D'] = df['D'].add(df['C'].shift(1).fillna(0))
输出:
C D
0 NaN 10.0
1 0.0 22.0
2 2.0 280.0
3 6.0 252.0
4 10.0 276.0
答案 1 :(得分:1)
df['C'] = df['C'].cumsum()
df['D'] = df['D'].add(df['C'].shift(1).fillna(0))
输出:
C D
0 NaN 10.0
1 0.0 22.0
2 2.0 280.0
3 6.0 252.0
4 12.0 276.0