У меня есть фреймворк pandas следующим образом:
FIRST GOAL WINNER
Algeria brazil
Argentina Argentina
Japan Germany
brazil brazil
france France
Я хочу проверить, является ли первый бомбардир победителем игры. кто-нибудь может помочь?
Pss: подумайте о том, чтобы принять ответ, если это помогло.






Тебе нужно:
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
IIUC:
Вам нужно сравнить france с France, что требует нормализации строки. Мы можем сделать все буквы UPPER, lower или Title. Я пошел с lower.
nuniqueСтек, затем используйте 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))
очень умное использование applymap bravo
Значение пытается быть установлено на копии фрагмента из DataFrame. Попробуйте вместо этого использовать .loc [row_indexer, col_indexer] = value См. Предостережения в документации: pandas.pydata.org/pandas-docs/stable/… "" "Точка входа для запуска ядра IPython. Я получил эту ошибку. Не могли бы вы помочь? Спасибо