Обновите значения фрейма данных, которые соответствуют условию регулярного выражения, и оставьте оставшиеся значения без изменений. - PullRequest
0 голосов
/ 03 февраля 2020

Ниже приводится выдержка из моего фрейма данных:

In[1]: df
Out[1]:
     LongName   BigDog   
1     Big Dog        1  
2     Mastiff        0    
3     Big Dog        1   
4         Cat        0   

Я хочу использовать регулярное выражение для обновления значений BigDog до 1, если LongName является мастифом. Мне нужны другие значения, чтобы остаться прежним. Я попробовал это, и хотя он назначает 1 мастифам, он обнуляет все остальные значения вместо того, чтобы сохранять их нетронутыми.

def BigDog(longname): 
    if re.search('(?i)mastiff', longname):
        return '1'

df['BigDog'] = df['LongName'].apply(BigDog) 

Я не уверен, что делать, кто-нибудь может помочь?

1 Ответ

1 голос
/ 03 февраля 2020

Вам не нужно все oop или применять, используйте str.match с DataFrame.loc:

df.loc[df['LongName'].str.match('(?i)mastiff'), 'BigDog'] = 1

  LongName  BigDog
1  Big Dog       1
2  Mastiff       1
3  Big Dog       1
4      Cat       0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...