Как уменьшить часть значения поля столбца данных на основе другого столбца - PullRequest
0 голосов
/ 08 мая 2018

У меня есть такой фрейм данных.

Я пытаюсь удалить строку, которая присутствует в столбце подстроки.

Main                     substring
Sri playnig well cricket cricket
sri went out             NaN
Ram is in                NaN
Ram went to UK,US        UK,US

Мой ожидаемый результат:

Main                     substring
Sri playnig well         cricket
sri went out             NaN
Ram is in                NaN
Ram went to              UK,US

Я пытался df["Main"].str.reduce(df["substring"]), но не работает, пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Этот однострочник должен сделать это:

df.loc[df['substring'].notnull(), 'Main'] = df.loc[df['substring'].notnull()].apply(lambda x: x['Main'].replace(x['substring'], ''), axis=1)
0 голосов
/ 08 мая 2018

Это один из способов использования pd.DataFrame.apply.Обратите внимание, что np.nan == np.nan оценивается как False, мы можем использовать этот прием в нашей функции, чтобы определить, когда применять логику удаления.

import pandas as pd, numpy as np

df = pd.DataFrame({'Main': ['Sri playnig well cricket', 'sri went out',
                            'Ram is in' ,'Ram went to UK,US'],
                   'substring': ['cricket', np.nan, np.nan, 'UK,US']})

def remover(row):
    sub = row['substring']
    if sub != sub:
        return row['Main']
    else:
        lst = row['Main'].split()
        return ' '.join([i for i in lst if i!=sub])

df['Main'] = df.apply(remover, axis=1)

print(df)

               Main substring
0  Sri playnig well   cricket
1      sri went out       NaN
2         Ram is in       NaN
3       Ram went to     UK,US
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...