#python #pandas
#python #панды
Вопрос:
Я пытаюсь заменить строку в одном столбце другой строкой, используя .where следующим образом:
dfn = df.where(df['name'].str.count(' ') < 2, df['name'].str.replace(' ', ' _ '), axis=1)
Правильные столбцы найдены, но вся строка заменена на NaN …
Спасибо
Ответ №1:
Использовать Series.mask
:
df = pd.DataFrame({"name": ['aaa ss d', 'a s', 'a f g g']})
m = df['name'].str.count(' ') < 2
df['name'] = df['name'].mask(m, df['name'].str.replace(' ', ' _ '))
print (df)
name
0 aaa ss d
1 a _ s
2 a f g g
Или DataFrame.loc
:
m = df['name'].str.count(' ') < 2
df.loc[m, 'name'] = df.loc[m, 'name'].str.replace(' ', ' _ ')
Комментарии:
1. Отлично, спасибо.