开发者社区> 问答> 正文

以更快的方式垂直地显示不同列的concat数据流

我试着把两个巨大的数据框(约15GB)像下面这样: a_df:

            A       B       C       D
2018-10-16  a16     b16     c16     d16
2018-10-17  a17     b17     c17     d17
2018-10-18  a18     b18     c18     d18
2018-10-19  a19     b19     c19     d19
2018-10-20  a20     b20     c20     d20

b_df:

            A       C       Y       Z       
2018-10-21  a21     c21     y21     z21     
2018-10-22  a22     c22     y22     z22     

要获得最终数据流:

            A       B       C       D       Y       Z
2018-10-16  a16     b16     c16     d16
2018-10-17  a17     b17     c17     d17
2018-10-18  a18     b18     c18     d18
2018-10-19  a19     b19     c19     d19
2018-10-20  a20     b20     c20     d20
2018-10-21  a21             c21             y21     z21
2018-10-22  a22             c22             y22     z22

我尝试的代码:

dfs = [a_df, b_df]

unique_columns = []
for df in dfs:
    for column in df.columns:
        unique_columns.append(column)
unique_columns = sorted(set(unique_columns))

same_columns_dfs = []
for df in dfs:
    empty_df = pd.DataFrame(np.nan, index=df.index, columns=unique_columns)
    empty_df.loc[:, df.columns] = df.values
    same_columns_dfs.append(empty_df)

final_df = pd.concat(same_columns_dfs, axis=0, sort=True)

有没有更有效的方法呢? 问题来源StackOverflow 地址:/questions/59383627/faster-way-to-concat-dataframes-with-different-columns-vertically

展开
收起
kun坤 2019-12-27 10:13:46 355 0
1 条回答
写回答
取消 提交回答
  • 作为你想要的输出,一个直接的pd。dfs列表中的concat和fillna将产生输出

    dfs = [a_df, b_df]
    df_out = pd.concat(dfs, sort=True).fillna('')
    
    Out[176]:
                  A    B    C    D    Y    Z
    2018-10-16  a16  b16  c16  d16
    2018-10-17  a17  b17  c17  d17
    2018-10-18  a18  b18  c18  d18
    2018-10-19  a19  b19  c19  d19
    2018-10-20  a20  b20  c20  d20
    2018-10-21  a21       c21       y21  z21
    2018-10-22  a22       c22       y22  z22
    
    2019-12-27 10:13:59
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
RowKey与索引设计:技巧与案例分析 立即下载
重新定义计算的边界 立即下载
低代码开发师(初级)实战教程 立即下载

相关实验场景

更多