我试图自己解决这个问题,但遗憾的是我没有取得多大进展,非常感谢任何可以帮助我的人。
我当前的数据框包含3列:2列健康列和1列缺少值,表示为NaN。
df
Out[18]:
x1 x2 x3
0 A 1 2.0
1 B 0 NaN
2 A 0 1.0
3 A 1 2.0
4 A 0 NaN
5 B 1 1.0
6 A 1 1.0
7 B 0 2.0
8 B 0 2.0
我想在' x3'中填写缺失值通过取' x1'的groupby的中值。和' x2'。
groupby_df = df.groupby(['x1', 'x2'])['x3'].median()
groupby_df
Out[22]:
x1 x2
A 0 1.0
1 2.0
B 0 2.0
1 1.0
因此,例如,对应于(B,0)的NaN值将被2和(A,0)替换为1.我遗憾的是无法弄清楚这一部分。是否有优雅的#34; DataFrame方式"使用groupby?
用计算的中值填充NaN值谢谢
答案 0 :(得分:0)
在fillna
groupby
df['x3']=df.groupby(['x1','x2'])['x3'].apply(lambda x : x.fillna(x.median()))
df
Out[928]:
x1 x2 x3
0 A 1 2.0
1 B 0 2.0
2 A 0 1.0
3 A 1 2.0
4 A 0 1.0
5 B 1 1.0
6 A 1 1.0
7 B 0 2.0
8 B 0 2.0