在“cell1”和“cell2”下的“t”列上合并多级数据帧的python / panda方法是什么?
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.arange(4).reshape(2, 2),
columns = [['cell 1'] * 2, ['t', 'sb']])
df2 = pd.DataFrame([[1, 5], [2, 6]],
columns = [['cell 2'] * 2, ['t', 'sb']])
现在,当我尝试在"t"
上合并时,python REPL将出错
ddf = pd.merge(df1, df2, on='t', how='outer')
处理这个问题的好方法是什么?
答案 0 :(得分:4)
一种解决方案是从数据框中删除顶级(例如cell_1
和cell_2
),然后合并。
如果需要,可以保存这些列以在合并后恢复它们。
c1 = df1.columns
c2 = df2.columns
df1.columns = df1.columns.droplevel()
df2.columns = df2.columns.droplevel()
df_merged = df1.merge(df2, on='t', how='outer', suffixes=['_df1', '_df2'])
df1.columns = c1
df2.columns = c2
>>> df_merged
t sb_df1 sb_df2
0 0 1 NaN
1 2 3 6
2 1 NaN 5
答案 1 :(得分:3)
pd.merge(df1, df2, left_on=[('cell 1', 't')], right_on=[('cell 2', 't')])