2017-02-21 93 views
3

有人可以告訴我如何填寫我的數據框的缺失值嗎?缺少的值不會以NaN或任何常見的形式出現,而會顯示爲像兩個點一樣的字符。我將如何使用它們所在行的平均值填充它們?如何填寫我的數據框

     1971  1990  1999  2000  2001  2002 

Estonia    ..  17.4  8.3  8.5  8.5  8.6 
Spain    61.6 151.2 205.9 222.2 233.2 241.6 
SlovakRepublic  10.9  25.5  28.1  30.8  31.9  32.2 
Slovenia    ..  12.4  13.3  13.6  14.5  14.6 

我的標題是年份,我的索引是國家。

+0

這是什麼樣的dtypes?他們是混合還是'str'?例如'df ['1971']。replace('..',np.NaN)'工作? – EdChum

回答

2

看來你可以使用mask,由numpy array創建,最後投中的所有列通過比較和values通過mean更換到float

print (df.mean(axis=1)) 
Estonia   10.26 
Spain    210.82 
SlovakRepublic  29.70 
Slovenia   13.68 

df = df.mask(df.values == '..', df.mean(axis=1), axis=0).astype(float) 
print (df) 
       1971 1990 1999 2000 2001 2002 
Estonia   10.26 17.4 8.3 8.5 8.5 8.6 
Spain   61.6 151.2 205.9 222.2 233.2 241.6 
SlovakRepublic 10.9 25.5 28.1 30.8 31.9 32.2 
Slovenia  13.68 12.4 13.3 13.6 14.5 14.6 
+0

哇,太快了!十分感謝你的幫助!! – Cannon

+0

所有列都是浮動的? – jezrael

+0

是的,他們都是浮動的,只有一個尾隨小數。 – Cannon

0

您應該能夠使用.set_value

試df_name.set_value('index','column',value)

類似於

df_name.set_value('Estonia','1971', 50) 
+1

這也適用於將值放入一個接一個!感謝您的反饋意見。 – Cannon