更改“?”数据框中的NaN值

时间:2020-09-28 03:17:47

标签: pandas dataframe

我有一列叫做“国家”的列,并且有很多“?”作为值,我试图将它们转换为NAN,但值没有改变。这是我的代码。

df['Country'].value_counts()

United-States      29170

Mexico             643

?                  583

Philippines        198

Germany            137


df[df['Country']=='?'] = np.nan

df['Country'].isnull().sum()

0

我也尝试使用替换功能。

df['Country'].replace('?', np.nan)

我也尝试过

df = pd.read_csv('train.csv', na_values=['?'])

即使我尝试打印国家/地区值为“?”的所有行

它给出空的数据框。我不知道该怎么解决。有人可以帮我吗。

谢谢

2 个答案:

答案 0 :(得分:1)

您的?似乎有空格。您需要剥离这些内容,然后使用replace应用inplace=True命令,如下所示:

In [848]: df
Out[848]: 
         Country  values
0  United-States   29170
1         Mexico     643
2              ?     583
3    Philippines     198
4        Germany     137

In [849]: df['Country'].str.strip().replace('?', np.nan, inplace=True)

In [850]: df
Out[850]: 
         Country  values
0  United-States   29170
1         Mexico     643
2            NaN     583
3    Philippines     198
4        Germany     137

答案 1 :(得分:0)

df['Country'].replace(['?'], np.nan,inplace = True)

您忘了用True替换,因此它没有反映