![](/img/trans.png)
[英]How to keep column MultiIndex values when merging pandas DataFrames
[英]Merging Pandas DataFrames on MultiIndex column values
我有兩個多級列數據框。
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 列 'df1_labels','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_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
歡迎任何幫助!
對我來說,為tuples
添加[]
:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.