合并具有指定后缀的多个数据帧

时间:2018-01-13 02:31:28

标签: python pandas

我实现了合并多个数据框,引用this page 我想要做的还是为每个数据帧指定后缀,如下所示 但是,我得到了ValueError: too many values to unpack (expected 2) 我明白,为后缀提供长于2的元组会导致此问题。但我不知道如何编写代码来解决这个问题 谁能告诉我怎么写?

def agg_df(dfList, suffix):
    temp=reduce(lambda left, right: pd.merge(left, right, left_index=True, right_index=True, 
                                             how='outer', suffixes=suffix), dfList)
    return temp

df=agg_df([df_cool, df_light, df_sp, df_hvac], ('_chiller', '_light', '_sp', '_hvac'))

2 个答案:

答案 0 :(得分:5)

您可以在merge之前添加后缀add_suffix

dfs = {0: df_cool, 1: df_light, 2: df_sp, 3: df_hvac}
suffix = ('_chiller', '_light', '_sp', '_hvac')
for i in dfs:
    dfs[i] = dfs[i].add_suffix(suffix[i])

然后从suffixes中移除merge参数,您就完成了:

def agg_df(dfList):
    temp=reduce(lambda left, right: pd.merge(left, right, 
                                             left_index=True, right_index=True, 
                                             how='outer'), dfList)
    return temp

df = agg_df(dfs.values())

答案 1 :(得分:0)

合并是pyspark没有后缀选项,但是您可以使用考拉来实现

    import databricks.koalas as ks

    left_kdf = ks.DataFrame(hist_sls_cy)
    right_kdf = ks.DataFrame(hist_sls_ly)
    kdf_cmbnd = left_kdf.merge(right_kdf,on=['x1','x2'],how='left',suffixes=('','_last'))