#python #python-3.x #pandas
#python #python-3.x #pandas
Вопрос:
У меня есть две таблицы A / B. Я хочу объединить таблицу слияния A в B при создании цикла.
Ввод
Table A: Table B:
name year name subject group
James one Jenny Physics
Jackson one Jackson Maths
Jenny two Jenny PE
Himeth three Himeth Chemistry
Carlos three Carlos Physics
Mendy one Mendy German
James two James Physics
Himeth one Himeth Chemistry
Вывод
Name subject group year_one year_two year_three
Jenny PE Yellow two
Jackson Maths Green one
James Physics Yellow one two
Himeth Chemistry Yellow one three
Carlos Physics Green three
Mendy German Yellow one
Я хочу добавить столбец year из таблицы A, но создать столбцы для year (один, два, три), поскольку есть дубликаты.
years = [«один», «два», «три»]
for i in years:
df.to_csv("student.csv")
dfs = pd.merge(df,students,
on = "Name",
how = "left")
dfs[i] = i
dfs.to_csv("class_setup.csv")
Я не уверен, как выполнить цикл для слияния и создать новый столбец.
Ответ №1:
Используйте DataFrame.pivot
с DataFrame.join
:
df = df2.join(df1.pivot('name','year','year'), on='name').fillna('')
print (df)
name one three two
0 Jenny two
1 Jackson one
2 Jenny two
3 Himeth one three
4 Carlos three
5 Mendy one
6 James one two
7 Himeth one three
Если порядок важен:
years = ["one", "two", "three"]
df = df2.join(df1.pivot('name','year','year').reindex(years, axis=1), on='name').fillna('')
print (df)
name one two three
0 Jenny two
1 Jackson one
2 Jenny two
3 Himeth one three
4 Carlos three
5 Mendy one
6 James one two
7 Himeth one three
Комментарии:
1. В моей таблице A 200 имен, а в таблице B 500 имен. Я должен слева соединить B с A перед запуском вашего кода, в котором я еще не уверен. Дубликаты вызывают проблему с pd.merge
2. @james — Нет, не объединяйте перед моим кодом.
join
В моем решении используется For merge3. pivot не работает, потому что в таблице A есть дубликаты имен с разными годами.
4. @james — так это означает, что данные отличаются, как в вопросе? Можете ли вы изменить данные на
pivot
сбой и добавить ожидаемый результат?5. обновил мою выходную таблицу, чтобы было понятно. В таблице B есть другие столбцы, и я хочу создать три дополнительных столбца (один, два, три) из таблицы A