У меня есть два многоуровневых столбца данных.
import pandas as pd
df1 = pd.DataFrame({'col1':[1,1,2,2],'col2':[10,10,20,20]})
df1.columns = pd.MultiIndex.from_product([['df1_labels'],df1.columns])
df1
df1_labels
col1 col2
0 1 10
1 1 10
2 2 20
3 2 20
df2 = pd.DataFrame({'col3':[100,200],'col4':[10,20]})
df2.columns = pd.MultiIndex.from_product([['df2_labels'],df2.columns])
df2
df2_labels
col3 col4
0 100 10
1 200 20
Я хотел бы объединить их со значениями в столбце 'df1_labels', 'col2' в df1 и столбце 'df2_labels', 'col2' в df2. Мой ожидаемый результат будет:
df1_labels df2_labels
col1 col2 col3 col4
0 1 10 100 10
1 1 10 100 10
2 2 20 200 20
3 2 20 200 20
Я пробовал это:
df3 = pd.merge(df1,df2, left_on=('df1_labels','col2'), right_on=('df2_labels','col4'))
df3
И это:
df3 = pd.merge(df1,df2, left_on=['df1_labels','col2'], right_on=['df2_labels','col4'])
df3
Оба дают мне следующую ошибку:
ValueError: Метка столбца 'df2_labels' не уникальна. Для многоиндексных метка должна быть кортежем с элементами, соответствующими каждому уровню.
Я должен делать синтаксические ошибки. С уровнями одного столбца это работает:
pd.merge(pd.DataFrame({'col1':[1,1,2,2],'col2':[10,10,20,20]}),
pd.DataFrame({'col3':[100,200],'col4':[10,20]}),
left_on='col2',right_on='col4')
col1 col2 col3 col4
0 1 10 100 10
1 1 10 100 10
2 2 20 200 20
3 2 20 200 20
Любая помощь будет приветствоваться!