Python 3.x 如何在dataframe中用用户定义的值填充NaN

Python 3.x 如何在dataframe中用用户定义的值填充NaN,python-3.x,pandas,Python 3.x,Pandas,如何在dataframe中用用户定义的值填充NaN 对于像A和B这样的文本列,用户定义的像“缺失”这样的文本应该被插补。对于离散数值变量,如C和D,应插补中值。我有很多这样的列,我想为dataframe中的所有变量应用规则 DF DF输出: A B C D A0A1 Railway 10 2 A1A1 Shipping 3 1 Missing S

如何在dataframe中用用户定义的值填充NaN

对于像A和B这样的文本列,用户定义的像“缺失”这样的文本应该被插补。对于离散数值变量,如C和D,应插补中值。我有很多这样的列,我想为dataframe中的所有变量应用规则

DF

DF输出:

 A           B            C          D
A0A1       Railway        10         2
A1A1       Shipping       3          1
Missing    Shipping       3          2
B1A1       Missing        1          7

您可以通过旁路
dict

df.fillna({'A':'Miss','B':"Your2",'C':df.C.median(),'D':df.D.mean()})
Out[373]: 
      A         B     C         D
0  A0A1   Railway  10.0  3.333333
1  A1A1  Shipping   3.0  1.000000
2  Miss  Shipping   3.0  2.000000
3  B1A1     Your2   1.0  7.000000

有趣的方式

d = {np.dtype('O'): 'Missing'}
df.fillna(df.dtypes.map(d).fillna(df.median()))

         A         B     C    D
0     A0A1   Railway  10.0  2.0
1     A1A1  Shipping   3.0  1.0
2  Missing  Shipping   3.0  2.0
3     B1A1   Missing   1.0  7.0
首先替换数字列,然后替换非数字列:

df = df.fillna(df.median()).fillna('Missing')
print (df)

         A         B     C    D
0     A0A1   Railway  10.0  2.0
1     A1A1  Shipping   3.0  1.0
2  Missing  Shipping   3.0  2.0
3     B1A1   Missing   1.0  7.0

df.fillna({'A':'Miss','B':'Your2','C':df.C.median(),'D':df.D.median()})
?@jezrael是的,你是对的,在这里给他更多的选择:-)如何对一组类似的变量执行此操作,假设我想为20个变量传递'Miss',然后我需要为每个变量创建字典。理想情况下,我有1400个变量,我需要进行插补。@user9219405使用dict(zip(list1,list2))保留您的姓名列表您认为我的解决方案如何?哈哈,刚刚发布了这个。删除(-:
df = df.fillna(df.median()).fillna('Missing')
print (df)

         A         B     C    D
0     A0A1   Railway  10.0  2.0
1     A1A1  Shipping   3.0  1.0
2  Missing  Shipping   3.0  2.0
3     B1A1   Missing   1.0  7.0