如何合并多级(即多索引)数据帧?

2024-06-30 12:51:41 发布

您现在位置:Python中文网/ 问答频道 /正文

python/panda如何在“cell1”和“cell2”下的列“t”上合并多级数据帧?在

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"上合并时,pythonrepl将出错

^{pr2}$

有什么好办法来处理这个问题?在


Tags: columns数据importnumpydataframepandasasnp
2条回答

一种解决方案是从数据帧中删除顶层(例如cell_1cell_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
pd.merge(df1, df2, left_on=[('cell 1', 't')], right_on=[('cell 2', 't')])

相关问题 更多 >