我有以下数据框:
claim diagnosis sequence
100 1 1.0
100 2 1.0
100 3 NaN
100 4 NaN
105 1 1.0
105 2 2.0
105 3 2.0
105 4 NaN
111 1 1.0
111 2 2.0
111 3 3.0
111 4 NaN
我需要的是通过声明将所有NaN替换为上一行中的oneup值:
claim diagnosis sequence
100 1 1.0
100 2 1.0
100 3 2.0
100 4 3.0
105 1 1.0
105 2 2.0
105 3 2.0
105 4 3.0
111 1 1.0
111 2 2.0
111 3 3.0
111 4 4.0
我尝试了cumcount,但似乎无法使用以前的值。我也尝试过loc,但还不太熟悉。
things = [{'claim':100, 'diagnosis':1, 'sequence':1},
{'claim':100, 'diagnosis':2, 'sequence':1 },
{'claim':100, 'diagnosis':3, },
{'claim':100, 'diagnosis':4, },
{'claim':105, 'diagnosis':1, 'sequence':1},
{'claim':105, 'diagnosis':2, 'sequence':2},
{'claim':105, 'diagnosis':3,'sequence':2 },
{'claim':105, 'diagnosis':4, },
{'claim':111, 'diagnosis':1, 'sequence':1},
{'claim':111, 'diagnosis':2, 'sequence':2},
{'claim':111, 'diagnosis':3, 'sequence':3},
{'claim':111, 'diagnosis':4, }]
df = pd.DataFrame(things)
df
我已经为此动了好几天,任何帮助都是很棒的。
使用该行之前的cumsum
计数数量NaN
,然后加起来ffill
s1=df['sequence'].isnull().groupby(df['claim']).cumsum()
df['sequence']=s1+df.groupby('claim')['sequence'].ffill()
df
Out[145]:
claim diagnosis sequence
0 100 1 1.0
1 100 2 1.0
2 100 3 2.0
3 100 4 3.0
4 105 1 1.0
5 105 2 2.0
6 105 3 2.0
7 105 4 3.0
8 111 1 1.0
9 111 2 2.0
10 111 3 3.0
11 111 4 4.0
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句