Панды, заменяющие все значения столбцов на nan

#python #python-3.x #pandas #dataframe #nan

#python #python-3.x #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"]

Небольшая помощь?

Комментарии:

1. вам лучше использовать general .replace , а не str.replace . Итак df['True/False'] = df['True/False'].replace({'False':1,'True':0})

2. кроме того, 'False' в вашем коде отсутствует запятая после

Ответ №1:

Вместо 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  ---