merge row with next row in dataframe pandas

后端 未结 2 1555
名媛妹妹
名媛妹妹 2021-01-06 16:14

I have a dataframe in pandas which contains multiple columns. I want to merge every row with the next row. Example:

input dataframe:

A   B   C
a1  a2         


        
相关标签:
2条回答
  • 2021-01-06 16:28

    You could use

    In [204]: pd.concat([df.add_suffix(1), df[1:].reset_index(drop=True).add_suffix(2)],
                        axis=1)
    Out[204]:
       A1  B1  C1   A2   B2   C2
    0  a1  a2  a3   b1   b2   b3
    1  b1  b2  b3   c1   c1   c3
    2  c1  c1  c3   d1   d2   d3
    3  d1  d2  d3  NaN  NaN  NaN
    

    And, extend it to generic use

    In [206]: N = 3   # Say 3 more times
    
    In [207]: pd.concat([df.add_suffix(1)] + 
                        [df[x+1:].reset_index(drop=True).add_suffix(x+2)
                         for x in range(N)], axis=1)
    Out[207]:
       A1  B1  C1   A2   B2   C2   A3   B3   C3   A4   B4   C4
    0  a1  a2  a3   b1   b2   b3   c1   c1   c3   d1   d2   d3
    1  b1  b2  b3   c1   c1   c3   d1   d2   d3  NaN  NaN  NaN
    2  c1  c1  c3   d1   d2   d3  NaN  NaN  NaN  NaN  NaN  NaN
    3  d1  d2  d3  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
    
    0 讨论(0)
  • 2021-01-06 16:48

    Use shift with join, concat or assign, for new columns names add_suffix is useful:

    df1 = df.add_suffix('1').join(df.shift(-1).add_suffix('2'))
    

    df1 = pd.concat([df.add_suffix('1'), df.shift(-1).add_suffix('2')], axis=1)
    

    df1 = df.add_suffix('1').assign(**df.shift(-1).add_suffix('2'))
    
    
    print (df1)
       A1  B1  C1   A2   B2   C2
    0  a1  a2  a3   b1   b2   b3
    1  b1  b2  b3   c1   c1   c3
    2  c1  c1  c3   d1   d2   d3
    3  d1  d2  d3  NaN  NaN  NaN
    
    0 讨论(0)
提交回复
热议问题