Python 3.x 如何在dataframe中用用户定义的值填充NaN
如何在dataframe中用用户定义的值填充NaN 对于像A和B这样的文本列,用户定义的像“缺失”这样的文本应该被插补。对于离散数值变量,如C和D,应插补中值。我有很多这样的列,我想为dataframe中的所有变量应用规则 DF DF输出: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
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