无法将['']替换为DataFrame上的方法垫

时间:2018-06-29 21:12:45

标签: python pandas

运行python2.7

Question1

我想在数据帧“测试”中将空字符串”替换为“无”:

    from numpy.random import randn
    test = pd.DataFrame(randn(3,2))
    test.iloc[0,0]=''
    test.replace('', None)

给我错误TypeError:

不能用DataFrame上的方法pad替换['']。

出了什么问题?

问题2:

从numpy.random导入randn

test = pd.DataFrame(randn(3,2))
# this works
test.iloc[0,1]= 'A'
test[1] = test[1].replace('A','b')
# this does not
test.iloc[0,0]=''
test.loc[0] = test[0].replace('', None)


test 
          0         1
0                   b
1  0.042052  -1.44156
2  0.462131 -0.303288

我期待

test 
          0         1
0    None           b
1  0.042052  -1.44156
2  0.462131 -0.303288

2 个答案:

答案 0 :(得分:3)

没有人被解释为缺乏论据。试试:

test.replace({'':None})

问题2:

test.where(test != '', None)

答案 1 :(得分:0)

只需使用非数字。熊猫无论如何都会将您的None转换为非数字*。其次,不要忘记将结果分配给新变量或将inplace参数设置为Truetest.replace('', np.NaN)本身不执行任何操作。

import pandas as pd
import numpy as np
from numpy.random import randn
test = pd.DataFrame(randn(3,2))
test.iloc[0,0]=''
test = test.replace('', np.NaN)

*当所有数据具有相同的数据类型时,Pandas效果最佳,效率最高。在您的情况下为numpy.float64。 np.NaN也是一个小数浮点数。如果您想在数据框中使用None,则所有内容都需要存储为object数据类型,这会降低效率。 np.NaN可能正是您所需要的。