问题转化为这个我有一个简单的数据框,让我们称之为df
id k t
2A 1 100
2A 2 100
2A NaN 100
4C 3 80
4C 4 80
4C 1 80
3B NaN 120
3B 7 120
3B 4 120
我想创建一个称为t和t1的新列。t1基于t和k以及id。在这种情况下,我只有3个Id的2A,4C和3B。最终的输出将是。
id k t t1
2A 1 100 99
2A 2 99 97
2A NaN 97 97
4C 3 80 77
4C 4 77 73
4C 1 73 72
3B NaN 120 120
3B 7 120 113
3B 4 113 109
因此,想法如下
其中t1只是
df['t1']=df['t']-df['k']
最后一个df中t上的值的转换是我不知道该怎么做的,因为每个id的第一个值必须基于原始值df["t"]
,但随后是df [t1],如图所示。
让我们试着cumsum
用groupby
df['t1'] = df.t-df.fillna(0).groupby('id').k.cumsum()
df['t'] = df['t1'] + df['k'].fillna(0)
df
Out[85]:
id k t t1
0 2A 1.0 100.0 99.0
1 2A 2.0 99.0 97.0
2 2A NaN 97.0 97.0
3 4C 3.0 80.0 77.0
4 4C 4.0 77.0 73.0
5 4C 1.0 73.0 72.0
6 3B NaN 120.0 120.0
7 3B 7.0 120.0 113.0
8 3B 4.0 113.0 109.0
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句