Python 在多索引列值上合并数据帧
我有两个多级列数据帧Python 在多索引列值上合并数据帧,python,pandas,merge,multi-index,Python,Pandas,Merge,Multi Index,我有两个多级列数据帧 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.Data
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
我想将它们合并到colunm'df1_labels'、df1中的'col2'以及df2中的'df2_labels'列和'col2'中的值上。
我的预期结果是:
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_标签”不唯一。
对于多索引,标签必须是元组,其元素对应于每个级别
我一定是在语法上做错了什么。
对于单列级别,它可以工作:
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
欢迎任何帮助 对于我的工作,为
元组添加[]
:
df = pd.merge(df1,df2, left_on=[('df1_labels','col2')], right_on=[('df2_labels','col4')])
print (df)
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
也许你在找什么?