2016-08-20 3 views
2

'df'がデータフレームオブジェクトであり、 'ca'が変数の1つであるとします。Pandas Dataframeの欠損値のFilllが正しくない

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

ご覧のとおり、4つの欠損値があります。私はそれらに記入したい。以下のコードを使用:

>>> 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つのユニークな値がありますか? 5行目を1行目にマージしたい、つまり

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

どうすれば修正できますか?

答えて

0

'?'は、自分の価値観の一つだったので、私はdf.cadtypeobjectstringのいずれかであることを知っています。 replace('?', 0.)の場合は、文字列'0.0'と浮動小数点0.0の両方を使用できるようになりました。すべてを浮動小数点に変換した後は、問題はありません。あまりに

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

0.0 180 
1.0  65 
2.0  38 
3.0  20 
dtype: int64 
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