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))