我的Google-fu没有给我带来答案,所以我在这里发布我的问题。
假设我有两个数据帧df1
和df2
,并且我想将它们合并。 df1
在列上有一个多索引,而df2
由一个带有索引的多索引列组成。索引df2
的名称与df1
中一列的名称(在级别1)一致。如何使用df1
中的 one 列和df2
的索引来合并框架?一个简单的例子是这样的:
import pandas as pd
df1 = pd.DataFrame({('A', 'Col_1'): [1, 2, 3],
('A', 'Col_2'): ['A', 'B', 'C'],
('B', 'Col_1'): [1, 2, 3],
('B', 'Col_2'): ['A', 'B', 'C']})
df2 = pd.DataFrame({('C', 'Col_1'): ['X', 'Y', 'Z']},
index=pd.Index(['A', 'B', 'C'], name='Col_2'))
我的目标是将列df1
上的('B', 'Col_2')
与索引上的df2
合并,保留df1
中的所有列。该怎么做?
答案 0 :(得分:0)
根据对问题的理解,您希望基于Col_2将df1和df2连接在一起。这是您的操作方法。如果有些我想念的部分,请添加评论。
#dropping the group header of columns from df1
df1.columns = df1.columns.droplevel(0)
#Removing the duplicated columns in df1
df1 = df1.loc[:,~df1.columns.duplicated()]
#dropping the group header of columns from df2
df2.columns = df2.columns.droplevel(0)
#Reset the index of df2 as first column
df2.reset_index(level=0, inplace=True)
#Concatinating 2 dataframes
new_df = pd.concat([df1.set_index('Col_2'),df2.set_index('Col_2')], axis=1,
join='inner').reset_index()
最终输出看起来像这样
Col_2 Col_1 Col_1
0 A 1 X
1 B 2 Y
2 C 3 Z