PANDAS . где str.count < n str.replace

#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. Отлично, спасибо.