Как сравнить две клетки со строками в пандах? - PullRequest
0 голосов
/ 07 июня 2018

У меня есть датафрейм для панд:

ПОБЕДИТЕЛЬ ПЕРВОГО ЦЕЛЯ

Алжир, БразилияАргентина АргентинаЯпония ГерманияБразилия БразилияФранция Франция

Я хочу проверить, является ли первый бомбардир победителем игры.кто-нибудь может помочь?

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

IIUC:
Вам необходимо сравнить france с France, что требует нормализации строки.Мы можем сделать все буквы UPPER, lower или Title.Я пошел с lower.

nunique

Stack, затем использовал str.lower для нормализации заглавных букв.
В этом ответе я сложил фрейм данных только для того, чтобывызовите str.lower один раз для сложенного объекта Series.Затем я определил количество уникальных значений для первого уровня индекса, которые были нашими старыми строками.Если число уникальных значений равно единице, столбцы должны быть равны.

df.stack().str.lower().groupby(level=0).nunique().eq(1)

0    False
1     True
2    False
3     True
4     True
dtype: bool

Или

df.assign(is_winner=df.stack().str.lower().groupby(level=0).nunique().eq(1))

  FIRST GOAL     WINNER  is_winner
0    Algeria     brazil      False
1  Argentina  Argentina       True
2      Japan    Germany      False
3     brazil     brazil       True
4     france     France       True

Series.str.lower

Это практически идентично ответу Харва Ипана, за исключением того, что я добавил str.lower().

df.assign(is_winner=df['FIRST GOAL'].str.lower() == df['WINNER'].str.lower())

applymap

Это сжато.Один вызов с использованием applymap, который использует str.lower.Затем мне пришлось распаковать массив values в оператор eq.

from operator import eq

df.assign(winner=eq(*df.applymap(str.lower).values.T))
0 голосов
/ 07 июня 2018

Вам нужно:

df['is_winnder'] = df['FIRST GOAL'].str.lower() == df['WINNER'].str.lower()

Вывод:

    FIRST GOAL  WINNER   is_winnder
0    Algeria     brazil       False
1  Argentina  Argentina        True
2      Japan    Germany       False
3     brazil     brazil        True
4     france     France        True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...