代码之家  ›  专栏  ›  技术社区  ›  Nihal Saranga

逐个连接数据帧上的行

  •  1
  • Nihal Saranga  · 技术社区  · 7 年前

    我有两个数据帧

    df1:
      data  type
    0    a     1
    1    b     1
    2    c     1
    3    d     1
    4    e     1
    
    df2:
      data  type
    0    v     2
    1    w     2
    2    x     2
    3    y     2
    4    z     2 
    
    arr = [['a', 1], ['b', 1], ['c', 1], ['d', 1], ['e', 1]]
    arr2 = [['v', 2], ['w', 2], ['x', 2], ['y', 2], ['z', 2]]
    
    df1 = pd.DataFrame(arr, columns=['data', 'type'])
    df2 = pd.DataFrame(arr2, columns=['data', 'type'])
    

    我想把数据帧压缩并制作成类似于模式1中的无序排列的数据帧是类型1,类型2…..

    预期输出:

      data  type
    0    a     1
    1    v     2
    2    b     1
    3    w     2
    4    c     1
    5    x     2
    6    d     1
    7    y     2
    8    e     1
    9    z     2
    

    约束 :例如,如果df1的行数多于df2,则输出类似

       data  type
    0     a     1
    1     v     2
    2     b     1
    3     w     2
    4     c     1
    5     x     2
    6     d     1
    7     y     2
    8     e     1
    9     z     2
    10    f     1
    11    g     1
    12    h     1
    

    反之亦然。

    2 回复  |  直到 7 年前
        1
  •  1
  •   jpp    7 年前

    df1.index = df1.index*2
    df2.index = df2.index*2 + 1
    
    res = pd.concat([df1, df2]).sort_index()
    
    print(res)
    
      data  type
    0    a     1
    1    v     2
    2    b     1
    3    w     2
    4    c     1
    5    x     2
    6    d     1
    7    y     2
    8    e     1
    9    z     2
    

    reset_index

    res = res.reset_index(drop=True)
    
        2
  •  1
  •   Oli    7 年前

    arr = [['a', 1], ['b', 1], ['c', 1], ['d', 1], ['e', 1]]
    arr2 = [['v', 2], ['w', 2], ['x', 2], ['y', 2], ['z', 2]]
    
    df1 = pd.DataFrame(arr, columns=['data', 'type'])
    df2 = pd.DataFrame(arr2, columns=['data', 'type'])
    
    df1['temp'] = range(0, 2*df1.shape[0], 2)  # add even index
    df2['temp'] = range(1, 2*df2.shape[0], 2)  # add odd index
    df = pd.concat([df1, df2]).sort_values('temp').drop('temp', axis=1)
    
    print (df)
    
      data  type
    0    a     1
    0    v     2
    1    b     1
    1    w     2
    2    c     1
    2    x     2
    3    d     1
    3    y     2
    4    e     1
    4    z     2
    
    推荐文章