Pandas 用 nan 替换所有列值

Pandas replacing all column values with nan

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

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

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','---'] return [1,0,1,1,1,'---'] 当我 print(df['True/False']).

但我得到的是:

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

有点帮助?​​

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

创建 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  ---