Все еще относительно новичок в работе с 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. Если первые три буквы совпадают, замените, но я не знаю, как это сделать, потому что я стараюсь не кодировать жестко.
Может ли кто-нибудь помочь или указать мне правильное направление?
Это будет в том случае, если для названия команды нет сокращенного названия. Я пытаюсь сравнить содержимое, почти как частичное совпадение строки. Я просто хочу сравнить значение аббревиатуры с первыми тремя буквами в строке «Арсенал», я просто не знаю, как это сделать. @GauravTaneja
pandas
- это то, что вы ищете
импортировать панд как pd
df = pd.read_csv('input.csv')
df['team'] = df['Abrev']
df.drop('Abrev', axis=1, inplace=True)
df.to_excel('output.xls')
Я уже сделал это. Я хочу работать со столбцами, как указано выше.
вы можете использовать операцию 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
Спасибо! Это именно то, что я хотел сделать, спасибо за ваш вклад.
Если у вас уже есть столбец Abbreviation в данных, не могли бы вы просто отбросить столбец команды и переименовать столбец Abbr? Если это не так, вы можете создать столбец Abbr из столбца team, используя 'df [‘Team’]. Str.slice ’