首页 > 解决方案 > Pandas 用 nan 替换所有列值

问题描述

我有一个 pandas 数据框,其中包含一个由 3 个对象值填充的列:“true”、“false”和“---”

我想用 0 替换“真”值,用 1 替换“假”值,所以我写了以下内容

df['True/False'] = df['True/False'].str.replace('False' '1')
df['True/False'] = df['True/False'].str.replace('True', '0')

所以,我希望输入在我['False','True','False','False','False','---'] 返回[1,0,1,1,1,'---']时返回print(df['True/False'])

但相反,我得到:

["NaN","NaN","NaN","NaN","NaN","NaN"]

一点帮助?

标签: pythonpython-3.xpandasdataframenan

解决方案


而不是df.replace,您应该使用它,Series.map因为它更快:

创建一个dict要替换的值:

In [3590]: d = {'True': 0, 'False': 1}

考虑df

In [3592]: df = pd.DataFrame(['False','True','False','False','False','---'], columns=['A'])

In [3593]: df
Out[3593]: 
       A
0  False
1   True
2  False
3  False
4  False
5    ---

In [3597]: df.A = df.A.map(d).fillna(df.A)

In [3598]: df
Out[3598]: 
     A
0    1
1    0
2    1
3    1
4    1
5  ---

推荐阅读