在Pandas Dataframe中填写缺失值是错误的

时间:2016-08-20 06:42:23

标签: python pandas dataframe

假设' df'是数据框对象,' ca'是其中一个变数。

>>> df.ca.value_counts()
0.0    176
1.0     65
2.0     38
3.0     20
?        4
Name: ca, dtype: int64

如您所见,我有四个缺失值。我想填写它们。使用以下代码:

>>> df.loc[df.ca == '?', 'ca'] = 0.0
0.0    176
1.0     65
2.0     38
3.0     20
0.0      4
Name: ca, dtype: int64

为什么我有5个独特的值?我想将第五行合并到第一行,即

0.0   176 + 4 = 180
1.0     65
2.0     38
3.0     20

我该如何解决?

2 个答案:

答案 0 :(得分:0)

由于'?'是您的一个值,我知道df.cadtype objectstring。当您replace('?', 0.)时,您现在拥有字符串'0.0'和浮动0.0。将all转换为float后,您应该没有问题。

df.ca.replace('?', 0.).astype(float).value_counts()

0.0    180
1.0     65
2.0     38
3.0     20
dtype: int64

答案 1 :(得分:0)

以下内容也很有用:

In [193]: df = pd.DataFrame({'ca': [0.0]*176 + [1.0]*65 + [2.0]*38 + [3.0]*20 + ['?']*4})

In [194]: df.ca.value_counts()
Out[194]: 
0.0    176
1.0     65
2.0     38
3.0     20
?        4
Name: ca, dtype: int64

In [195]: df.loc[df.ca == '?', 'ca'] = 0.0

In [196]: df.ca.value_counts()
Out[196]: 
0.0    180
1.0     65
2.0     38
3.0     20
Name: ca, dtype: int64