我正在处理以下类似的数据。数据帧按照日期排序:
category value Date
0 1 24/5/2019
1 NaN 24/5/2019
1 1 26/5/2019
2 2 1/6/2019
1 2 23/7/2019
2 NaN 18/8/2019
2 3 20/8/2019
7 3 1/9/2019
1 NaN 12/9/2019
2 NaN 13/9/2019
我希望能够用前一个特定类别的平均值来替换“NaN”值。
在pandas中,最好的方法是什么?
我考虑了一些方法:
1)这个小段落:
df['mean' = df.groupby('category')['time'].apply(lambda x: x.shift().expanding().mean()))
这个可以让我正确进入,但是在另一列中,并且它不会替换NaN。
2)这个小节用列的平均值替换NaN:
df = df.groupby(df.columns, axis = 1).transform(lambda x: x.fillna(x.mean()))
这两个选项都不完全符合我的需求。如果有人能指导我,我将非常感激!
df['value']=df['value'].fillna(df.groupby('category')['value'].transform(lambda x: x.shift().expanding().mean()))
的翻译是什么? - ansev