【问题标题】:Pandas: Join multiple data frame on the same keysPandas:在同一个键上加入多个数据框
【发布时间】:2018-01-03 21:59:13
【问题描述】:

我需要使用相同的键连接 5 个数据框。我在进行连接时创建了几个临时数据框。下面的代码工作正常,但我想知道是否有更优雅的方式来实现这个目标?谢谢!

df1 = pd.read_pickle('df1.pkl')
df2 = pd.read_pickle('df2.pkl')
df3 = pd.read_pickle('df3.pkl')
df4 = pd.read_pickle('df4.pkl')
df5 = pd.read_pickle('df5.pkl')

tmp_1 = pd.merge(df1, df2,  how ='outer', on = ['id','week'])
tmp_2 = pd.merge(tmp_1, df3,  how ='outer', on = ['id','week'])
tmp_3 = pd.merge(tmp_2, df4,  how ='outer', on = ['id','week'])
result_df = pd.merge(tmp_3, df5,  how ='outer', on = ['id','week'])

【问题讨论】:

    标签: python-3.x pandas join dataframe


    【解决方案1】:

    设置索引后使用pd.concat

    dfs = [df1, df2, df3, df4, df5]
    cols = ['id', 'weedk']
    df = pd.concat([d.set_index(cols) for d in dfs], axis=1).reset_index()
    

    包括文件读取

    from glob import glob
    
    def rp(f):
        return pd.read_pickle(f).set_index(['id', 'week'])
    
    df = pd.concat([rp(f) for f in glob('df[1-5].pkl')], axis=1).reset_index()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-28
      • 2017-11-02
      相关资源
      最近更新 更多