Python Dataframe使用来自其他列的信息填充NaN值

时间:2017-10-27 17:44:30

标签: python pandas dataframe

我试图自己解决这个问题,但遗憾的是我没有取得多大进展,非常感谢任何可以帮助我的人。

我当前的数据框包含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值

谢谢

1 个答案:

答案 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