【问题标题】:Combine two data frames with one rows of one followed by one rows of another using pandas使用 pandas 将两个数据帧与一排一排然后另一排结合起来
【发布时间】:2019-09-20 08:31:25
【问题描述】:

我有两个这样的数据框:

df1
col1    col2
 A        1
 B        2
 C        3


df2
col1    col2
 E        4
 F        5
 G        6

我想通过组合这些数据帧来创建一个数据帧,其中一行 df1 后跟一行 df2。

想要的输出是

df
col1    col2
 A        1
 E        4
 B        2
 F        5
 C        3
 G        6

我可以使用 for 循环执行此操作,并将行从两个数据帧附加到单个数据帧中,

但我正在寻找以 Python 方式最有效地执行此操作的 pandas 快捷方式。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    concatDataFrame.stack 一起使用:

    df = pd.concat([df1, df2], 1, keys=(0,1)).stack(0).reset_index(drop=True)
    print (df)
      col1  col2
    0    A     1
    1    E     4
    2    B     2
    3    F     5
    4    C     3
    5    G     6
    

    或者:

    df = pd.concat([df1, df2]).sort_index().reset_index(drop=True)
    print (df)
      col1  col2
    0    A     1
    1    E     4
    2    B     2
    3    F     5
    4    C     3
    5    G     6
    

    【讨论】:

      【解决方案2】:

      我相信appendsort_index 也可以。需要RangeIndex的可以加reset_index

      df1.append(df2).sort_index().reset_index(drop=True)
      
      Out[536]:
        col1  col2
      0  A    1
      1  E    4
      2  B    2
      3  F    5
      4  C    3
      5  G    6
      

      【讨论】:

      • 添加 .reset_index(drop=True) 可能会使答案完美(索引也将连续数字)
      • @SH-SF:呵呵……我同意。不重置为RangeIndex :) 是我懒惰的一部分。您的评论促使我将其添加到答案中。我编辑并添加了它:)
      猜你喜欢
      • 2021-09-04
      • 2013-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-10
      • 2014-03-17
      相关资源
      最近更新 更多