Заменить значение, когда все содержимое - di git python - PullRequest
1 голос
/ 06 мая 2020

Ниже приведен образец моего df

id  name 
01  1
02  23 2    
03  234     
04  23423   
05  24 H AUTOSERVICE    
06  25 SUNGLASS

Цель состоит в том, чтобы «очистить» DF, заменив цифры на NaN, только если все значение содержит цифры.

Ожидаемый результат будет выглядеть так

id  name 
01  NaN
02  24 H AUTOSERVICE    
03  25 SUNGLASS

Я думал примерно так. Кроме того, он удалит все цифры, даже 24 H

 df['name'] = df['name'].replace(r'[0-9]', '')

Спасибо за помощь!

1 Ответ

2 голосов
/ 06 мая 2020

Первый шаг: Series.str.contains с отрицательным выбором [] чисел, а также пробелами \s и Series.where:

df['name'] = df['name'].where(df['name'].str.contains('[^0-9\s]'))
print (df)
   id              name
0   1               NaN
1   2               NaN
2   3               NaN
3   4               NaN
4   5  24 H AUTOSERVICE
5   6       25 SUNGLASS

Для удаления последовательных NaN s:

m = df['name'].isna()
df = df[m.ne(m.shift()) | ~m]
print (df)
   id              name
0  01               NaN
4  05  24 H AUTOSERVICE
5  06       25 SUNGLASS
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...