Python 在数据框中填写缺失的值错误

Python 在数据框中填写缺失的值错误,python,pandas,dataframe,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 2

假设“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

如何修复它?

因为
'?
是您的值之一,我知道
df.ca
要么是
dtype
对象
要么是
字符串
。当您
替换('?',0.)时
现在既有string
'0.0'
又有float
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

以下几点也很有效:

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