pandas fillna目前只能按列

时间:2018-01-30 14:27:10

标签: python python-3.x pandas dataframe

我有以下df

A
1.0
2.0
3.0
NaN

我尝试fillna使用字符串NaN替换not existed

df.fillna(value={'A': 'not existed'}, axis=1, inplace=True)

但是我收到了以下错误,

NotImplementedError: Currently only can fill with dict/Series column by column

如果我使用replace,它会起作用,

df['A'].replace(np.nan, 'not existed')

我想知道为什么会这样。

2 个答案:

答案 0 :(得分:2)

我工作正在删除axis=1

print (df)
     A    B
0  NaN  NaN
1  2.0  7.0
2  3.0  8.0
3  NaN  7.0

df.fillna({'A': 'not existed'}, inplace=True)
print (df)
             A    B
0  not existed  NaN
1            2  7.0
2            3  8.0
3  not existed  7.0
df.fillna({'A': 'not existed', 'B':'nwwww'}, inplace=True)
print (df)
             A      B
0  not existed  nwwww
1            2      7
2            3      8
3  not existed      7

答案 1 :(得分:1)

在DataFrame上使用fillna时,您应该传递一个字典,其中包含您要填充的每列的值,如here所述。

在任何情况下,您的错误都与使用axis的方式有关,请查看此工作示例:

import pandas

x = pandas.DataFrame({
    'x_1': [0, 1, 2, 3, 0, 1, 2, None, ],},
    index=[0, 1, 2, 3, 4, 5, 6, 7])

x.fillna(value={'x_1': 'not existed',}, axis=0, inplace=True)