【问题标题】:Append multiple pandas data frames at once一次追加多个 pandas 数据帧
【发布时间】:2016-07-31 07:00:46
【问题描述】:

我正在尝试找到一种方法来一次附加多个熊猫数据帧,而不是使用

逐个附加它们
df.append(df)

假设有 5 个 pandas 数据框 t1t2t3t4t5。我如何一次附加它们?相当于

df = rbind(t1,t2,t3,t4,t5)

【问题讨论】:

    标签: python pandas append


    【解决方案1】:

    我觉得你可以用concat:

    print pd.concat([t1, t2, t3, t4, t5])
    

    也许你可以ignore_index:

    print pd.concat([t1, t2, t3, t4, t5], ignore_index=True)
    

    docs 中的更多信息。

    【讨论】:

    • 如果你想让它们按某个值合并,比如说在第一列,你也可以这样做:pd.concat([t1, t2, t3, t4, t5], axis=1)
    • pd.concat([t1, t2, t3, t4, t5], axis=0, ignore_index=True)
    【解决方案2】:

    您是否尝试过使用列表作为附加参数?还是我错过了什么?

    import numpy as np
    import pandas as pd
    
    dates = np.asarray(pd.date_range('1/1/2000', periods=8))
    df1 = pd.DataFrame(np.random.randn(8, 4), index=dates, columns=['A', 'B', 'C', 'D'])
    df2 = df1.copy()
    df3 = df1.copy()
    df = df1.append([df2, df3])
    
    print df
    

    【讨论】:

    • 还有一个对称解决方案:pd.DataFrame().append([df1,df2, df3]).
    • 来自docs:“参数:其他:DataFrame 或 Series/dict-like 对象,或这些列表”(强调我的)
    【解决方案3】:

    假设我们有一个主 Excel 文件,其中有 3 个子表,分别命名为 p1p2p3

    我们可以如下一起阅读所有表格:

    d = pd.read_excel('p1.xlsx',sheet_name=['p1','p2','p3'])
    

    现在要将所有工作表合并到一个数据框中,我们可以使用以下内容:

    df=pd.concat(d[frame] for frame in d.keys())
    

    【讨论】:

      【解决方案4】:

      如果每个数据框的列不同,您可以添加为追加:

      #list dataframe you want to append
      frame = [t1, t2, t3, t4, t5]
      
      #new dataframe to store append result
      myDataFrame = pd.DataFrame()
      
      for df in frame:
          myDataFrame = myDataFrame.append(df)
      

      通过检查 myDataFrame 长度确保追加成功:

      len(myDataFrame)
      

      如果数据框中的所有列都相同,或者每个数据框的列不同,只要每个数据框的列数相同,您就可以使用 jezrael 提到的pd.concat(dataframe)

      有关追加和连接的更多信息,请单击下面的链接: Merge, join, concatenate and compare in Pandas

      【讨论】:

        【解决方案5】:

        #逐行追加

        combined_data = pd.concat([t1, t2, t3, t4, t5], axis=0)
        

        这会将一个数据帧堆叠在另一个数据帧上

        #column 明智附加

        combined_data = pd.concat([t1, t2, t3, t4, t5], axis=1)
        

        这将在第一个数据帧的右侧附加第二个数据帧

        【讨论】:

          猜你喜欢
          • 2020-06-14
          • 2022-01-23
          • 2015-05-31
          • 2019-05-31
          相关资源
          最近更新 更多