Python Сравнить столбцы Dataframe и заменить их содержимым на основе префикса

Все еще относительно новичок в работе с Python, и у меня есть некоторые проблемы.

В настоящее время у меня есть небольшая программа, которая принимает файлы CSV, объединяет их, помещает во фрейм данных, а затем преобразует их в Excel.

Я хочу сопоставить значения «Team» и «Abrev» из столбцов фрейма данных на основе префикса его значений, а затем заменить столбец Team содержимым столбца «Abrev».

Team         Games  Points  Abrev
Arsenal      38     87      ARS
Liverpool    38     80      LIV
Manchester   38     82      MAN
Newcastle    38     73      NEW

Хотелось бы, чтобы в итоге он выглядел так:

Team  Games  Points  
ARS   38     87      
LIV   38     80    
MAN   38     82      
NEW   38     73     

Итак, я думаю, что мне нужен цикл for для перебора количества строк в фрейме данных, а затем мне нужен способ сравнения содержимого по префиксу в столбце Abrev. Если первые три буквы совпадают, замените, но я не знаю, как это сделать, потому что я стараюсь не кодировать жестко.

Может ли кто-нибудь помочь или указать мне правильное направление?

Если у вас уже есть столбец Abbreviation в данных, не могли бы вы просто отбросить столбец команды и переименовать столбец Abbr? Если это не так, вы можете создать столбец Abbr из столбца team, используя 'df [‘Team’]. Str.slice ’

Gaurav Taneja 17.12.2018 19:23

Это будет в том случае, если для названия команды нет сокращенного названия. Я пытаюсь сравнить содержимое, почти как частичное совпадение строки. Я просто хочу сравнить значение аббревиатуры с первыми тремя буквами в строке «Арсенал», я просто не знаю, как это сделать. @GauravTaneja

tejosa 17.12.2018 19:30
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
2
140
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

pandas - это то, что вы ищете импортировать панд как pd

df = pd.read_csv('input.csv')
df['team'] = df['Abrev']
df.drop('Abrev', axis=1, inplace=True)
df.to_excel('output.xls')

Я уже сделал это. Я хочу работать со столбцами, как указано выше.

tejosa 17.12.2018 19:27
Ответ принят как подходящий

вы можете использовать операцию apply, чтобы получить желаемый результат.

df = pd.read_csv('input.csv')
df['Team'] = df.apply(lambda row: row['Team'] if row['Team'][:3].upper()!= row['Abrev'] 
                       else row['Abrev'],axis=1)
df.drop('Abrev', axis=1, inplace=True)

Это дает вам:

Team  Games  Points  
ARS   38     87      
LIV   38     80    
MAN   38     82      
NEW   38     73    

Спасибо! Это именно то, что я хотел сделать, спасибо за ваш вклад.

tejosa 17.12.2018 20:02

Другие вопросы по теме