【问题标题】:Concatenating multiindex columns using pandas使用 pandas 连接多索引列
【发布时间】:2021-09-23 03:02:42
【问题描述】:

如何连接两个 pandas 数据帧,其中一个数据帧具有多索引列?我需要在最终数据帧中保留多索引。

import numpy as np
import pandas as pd

df1_cols = ["a", "b"]
df1_vals = np.random.randint(1, 10, [2, 2])
df1 = pd.DataFrame(data=df1_vals, columns=df1_cols)

df2_cols = pd.MultiIndex.from_tuples([("c", "1"), ("c", "2"), ("d", "1"), ("d", "2")])
df2_vals = np.random.randint(1, 10, [2, 4])
df2 = pd.DataFrame(data=df2_vals, columns=df2_cols)

df = pd.concat([df1, df2], axis=1)

使用pd.concat(),多索引将被压缩。

   a  b  (c, 1)  (c, 2)  (d, 1)  (d, 2)
0  3  7       1       6       1       3
1  6  1       2       7       6       3

【问题讨论】:

    标签: python pandas concatenation multi-index


    【解决方案1】:

    您需要在两个 DataFrame 中使用 MultiIndex,以便在最终 DataFrame 中使用 MultiIndex

    df1.columns = pd.MultiIndex.from_product([df1.columns, ['']])
    print (df1.columns)
    MultiIndex([('a', ''),
                ('b', '')],
               )
    
    df = pd.concat([df1, df2], axis=1)
    print (df)
       a  b  c     d   
             1  2  1  2
    0  5  6  6  9  7  7
    1  1  7  7  7  2  6
    

    【讨论】:

      猜你喜欢
      • 2020-12-04
      • 2021-02-22
      • 1970-01-01
      • 2014-06-29
      • 2019-12-13
      • 1970-01-01
      • 2013-12-05
      • 2021-06-20
      • 1970-01-01
      相关资源
      最近更新 更多