Невозможно выполнить математическое вычисление с использованием Pandas в зависимости от того, отсутствуют ли ключевые слова в предложении. - PullRequest
0 голосов
/ 16 июня 2020

Я проверяю, НЕ существует ли пары слов в столбце B, и если они не существуют, взять целое число в столбце A и создать столбец C, в котором число отрицательное, путем умножения это на -1. Если слово существует, оно должно оставаться как есть.

Я столкнулся с двумя проблемами: 1) Я не могу проверить более одного слова; 2) Я получаю ошибку типа.

Вот df:

df = pd.DataFrame({"A": [10, 21, 13, 22],
                   "B": ["Shares Rise on Jobs News", 
                         "Outflows on bad projections", 
                         "Rebounds on Bounce", 
                         "Slides on negative assumption"]})

Проверить, существует ли слово:

df["C"] = \
df["B"].map(lambda x: "Negative" if "Rise" not in x else "Positive")

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

enter image description here

But if I add another word to look for, it breaks by returning wrong output.

df["C"] = \
df["B"].map(lambda x: "Negative" if "Rise" or "Rebounds" not in x else "Positive")

введите описание изображения здесь

Занимаясь второй частью проблемы, я настраиваю код, чтобы сделать числа отрицательными, если у них нет ключевых слов:

df["C"] = \
df["B"].map(lambda x: df["A"](-1) if "Rise" not in x else df["A"])


Я получаю "TypeError: 'Series 'объект не вызывается "

1 Ответ

1 голос
/ 16 июня 2020

Мы можем np.where + contains

df['Out'] = np.where(df.B.str.contains('Rise|Rebounds', case=False), 'Pos', 'Nag')
df
Out[11]: 
    A                              B  Out
0  10       Shares Rise on Jobs News  Pos
1  21    Outflows on bad projections  Nag
2  13             Rebounds on Bounce  Pos
3  22  Slides on negative assumption  Nag
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...