【问题标题】:Joining multiple Pandas data frames into one将多个 Pandas 数据帧合并为一个
【发布时间】:2021-05-18 02:36:55
【问题描述】:

我有数据框列表 (lst),我的列表有 2000 个数据框。我想将所有这些数据框合二为一。每个数据框有两列,每个数据框的第一列是相同的。例如:


#First dataframe
>>lst[0]
    0          1 
   11         6363
   21         737
   34          0
   43          0

#Second dataframe 
>>lst[1]
    0          1 
   11         33
   21          0
   34         937
   43          0

#third dataframe 
>>lst[2]
    0          1 
   11          73
   21          18
   34          27
   43          77

最终的数据框如下所示:

    0          1            2          3
   11         6363          33         73
   21         737           0          18
   34          0            937        27
   43          0            0          77

我怎样才能做到这一点?我们将不胜感激。

【问题讨论】:

    标签: python-3.x pandas


    【解决方案1】:

    首先我们可以将第一列设置为索引以在连接中忽略它

    lst = [df.set_index(0) for df in lst]
    

    然后我们连接列并将 0 列删除为列而不是索引

    df_out = pd.concat(lst, axis=1).reset_index()
    

    我们重命名列:

    df_out.columns = range(df_out.shape[1])
    

    结果是:

    >> df_out
        0     1    2   3 ...
    0  11  6363   33  73 ...
    1  21   737    0  18 ...
    2  34     0  937  27 ...
    3  43     0    0  77 ...
    

    【讨论】:

      【解决方案2】:

      你可以试试这个:

      lst = [df0, df1, df2, ...]
      
      # Merge dataframes
      df_all = lst[0]
      for df in lst[1:]:
          df_all = df_all.merge(df, how="outer", on=0)
      
      # Rename columns of final dataframe
      df_all.columns = list(range(df_all.shape[1]))
      
      print(df_all)
      # Outputs
          0     1    2   3 ...
      0  11  6363   33  73 ...
      1  21   737    0  18 ...
      2  34     0  937  27 ...
      3  43     0    0  77 ...
      

      【讨论】:

        猜你喜欢
        • 2018-01-31
        • 1970-01-01
        • 2017-03-25
        • 2020-03-03
        • 2019-05-31
        • 1970-01-01
        • 2021-10-18
        • 2020-07-28
        • 1970-01-01
        相关资源
        最近更新 更多