【问题标题】:How do I efficiently combine similar dataframes in Pandas into one giant dataframe如何有效地将 Pandas 中的相似数据框组合成一个巨大的数据框
【发布时间】:2013-01-17 06:56:25
【问题描述】:

我有 7000 个带列的数据框

Date, X_1
Date, X_2
...

每个数据帧大约有 2500 行。

日期有时会重叠,但不保证会重叠。

我想将它们组合成表单的数据框

Date  X_1  X_2 etc.

我尝试应用combine_first 7000 次,但速度真的很慢,因为它必须创建 7000 个新对象,每个对象都比上一个稍大。

有没有更有效的方法来组合多个数据帧?

【问题讨论】:

    标签: python pandas time-series


    【解决方案1】:

    假设 Date 是索引而不是列,那么您可以执行“外部”join

    df1.join([df2, df3, ..., df7000], how='outer')
    

    注意:传入 DataFrames 的生成器而不是列表可能更有效。

    例如:

    df1 = pd.DataFrame([[1, 2]], columns=['a', 'b'])
    df2 = pd.DataFrame([[3, 4]], index=[1], columns=['c', 'd'])
    df3 = pd.DataFrame([[5, 6], [7, 8]], columns=['e', 'f'])
    
    In [4]: df1.join([df2, df3], how='outer')
    Out[4]: 
        a   b   c   d  e  f
    0   1   2 NaN NaN  5  6
    1 NaN NaN   3   4  7  8
    

    .

    如果'Date' 是一列,您可以先使用set_index

    df1.set_index('Date', inplace=True)
    

    【讨论】:

      【解决方案2】:

      这个怎么样。

      list_of_dfs = os.listdir(dir_with_data)
      df = concat(list_of_dfs)
      df.set_index('Date')
      df = df.unstack()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-06
        • 2018-05-29
        • 1970-01-01
        • 2020-04-30
        • 2021-05-20
        • 1970-01-01
        • 1970-01-01
        • 2011-07-08
        相关资源
        最近更新 更多