【问题标题】:How to merge single level df to a multilevel df in Pandas?如何在 Pandas 中将单级 df 合并到多级 df?
【发布时间】:2017-04-20 07:32:26
【问题描述】:

我有一个多级 df 'AB'

A = pd.DataFrame([[1, 5, 2], [2, 4, 4], [3, 3, 1], [4, 2, 2], [5, 1, 4]],
             columns=['A', 'B', 'C'], index=[1, 2, 3, 4, 5])
B = pd.DataFrame([[3, 3, 3], [2, 2, 2], [4, 4, 4], [5, 5, 5], [6, 6, 6]],
             columns=['A', 'B', 'C'], index=[1, 2, 3, 4, 5])

A.columns = pd.MultiIndex.from_product([['A'], A.columns])
B.columns = pd.MultiIndex.from_product([['B'], B.columns])
AB = pd.concat([A, B], axis = 1)

我有一个单级 df 'C',它的索引与 'AB' 不同

C = pd.DataFrame([[1, 1], [1, 1], [1, 1]], columns=['AA', 'BB'], index=[1, 2, 3])

我需要将 'C' 合并到 df 'AB' 的 'B' 级别。结果应该像这样保持多级:

    A           B
    A   B   C   A   B   C   AA   BB
1   1   5   2   3   3   3   1    1
2   2   4   4   2   2   2   1    1
3   3   3   1   4   4   4   1    1
4   4   2   2   5   5   5
5   5   1   4   6   6   6

【问题讨论】:

    标签: python pandas join dataframe merge


    【解决方案1】:

    C上创建一个MultiIndex,第一层为'B',然后使用join

    C.columns = pd.MultiIndex.from_product([['B'], C.columns])
    ABC = AB.join(C, how='left')
    

    结果输出:

       A        B                
       A  B  C  A  B  C   AA   BB
    1  1  5  2  3  3  3  1.0  1.0
    2  2  4  4  2  2  2  1.0  1.0
    3  3  3  1  4  4  4  1.0  1.0
    4  4  2  2  5  5  5  NaN  NaN
    5  5  1  4  6  6  6  NaN  NaN
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-13
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      • 2019-06-04
      • 2019-01-04
      • 2014-10-28
      • 2018-08-20
      相关资源
      最近更新 更多