在 pandas 数据框中连接多索引信息

concatenating multi-indexed information within a pandas dataframe

我有一个如下所示的多索引数据框:

       col1 col2 col3 col4
 row1 0    A    A    b    b
      1    B    B    c    c
 row2 0    A    B    d    d
      1    B    B    e    e

并想知道连接信息的最有效方式,例如对于 row1+col1、row1+col2 等,我的结果将是:

              col1  col2  col3  col4
row1            AB    AB    bc    bc
row2            AB    BB    de    de

到目前为止,我认为最好/唯一的方法是:

dx = pd.concat(
    [df[col].unstack().apply(lambda row: row.str.cat(sep=''),axis=1) 
        for col in df.columns],
    axis=1,
)

dx.columns = df.columns

实际上,此特定数据框的大小为 150 万行乘以 1000 列,因此欢迎采用更有效的迭代方式!

字符串是 sum 兼容的,所以这将简单地通过在索引的第一级分组来实现:

df.groupby(level=0).apply(sum)
Out[37]: 
     col1 col2 col3 col4
row1   AB   AB   bc   bc
row2   AB   BB   de   de