【问题标题】:Merge multiple Dataframe with Different Order Columns合并具有不同顺序列的多个数据框
【发布时间】:2018-02-26 14:21:57
【问题描述】:

我有三个这样的pandas.Dataframe

df1
    A_1 A_2 A_3 
MAC                                                     
ID1 1.0 1.0 2.0 
ID2 6.0 6.0 7.0 
ID3 1.0 2.0 3.0 

df2
    B_1 B_2 B_3 
MAC                                                     
ID1 1.0 1.0 1.0 
ID2 2.0 2.0 3.0 
ID3 1.0 1.0 1.0 

df3
    C_1 C_2 C_3 
MAC                                                     
ID1 1.0 1.0 2.0 
ID2 5.0 5.0 5.0 
ID3 1.0 2.0 3.0 

我想pd.mergepd.concat 的预期结果如下所示:

MAC A_1 B_1 C_1 A_2 B_2 C_2 A_3 B_3 C_3
ID1 1.0 1.0 1.0 1.0 1.0 1.0 2.0 1.0 2.0
ID2 6.0 2.0 5.0 6.0 2.0 5.0 7.0 3.0 5.0
ID3 1.0 1.0 1.0 2.0 1.0 2.0 3.0 1.0 3.0

我在这个链接里搜索了https://pandas.pydata.org/pandas-docs/stable/merging.html,但是结果和我预想的不一样。 提前感谢您的回答。

【问题讨论】:

    标签: pandas dataframe merge


    【解决方案1】:

    我认为您需要 concatreindex 通过自定义 lambda 函数:

    df = pd.concat([df1, df2, df3], axis=1) 
    df = df.reindex(columns=sorted(df.columns, key=lambda x: int(x.split('_')[1])))
    print (df)
         A_1  B_1  C_1  A_2  B_2  C_2  A_3  B_3  C_3
    MAC                                             
    ID1  1.0  1.0  1.0  1.0  1.0  1.0  2.0  1.0  2.0
    ID2  6.0  2.0  5.0  6.0  2.0  5.0  7.0  3.0  5.0
    ID3  1.0  1.0  1.0  2.0  1.0  2.0  3.0  1.0  3.0
    

    【讨论】:

      猜你喜欢
      • 2021-03-20
      • 1970-01-01
      • 1970-01-01
      • 2018-03-21
      • 2016-09-30
      • 1970-01-01
      • 1970-01-01
      • 2013-12-08
      • 2015-03-21
      相关资源
      最近更新 更多