将行与数据帧 pandas 中的下一行合并

Kuz*_*nbo 4 python merge rows dataframe pandas

我在 pandas 中有一个包含多列的数据框。我想将每一行与下一行合并。例子:

输入数据框:

A   B   C
a1  a2  a3
b1  b2  b3
c1  c1  c3
d1  d2  d3
Run Code Online (Sandbox Code Playgroud)

输出数据帧:

A1   B1   C1  A2   B2   C2
a1   a2   a3  b1   b2   b3
b1   b2   b3  c1   c2   c3
c1   c2   c3  d1   d2   d3
d1   d2   d3  NaN  NaN  NaN
Run Code Online (Sandbox Code Playgroud)

我想出的解决方案是复制原始数据帧,将索引更改为索引 - 1,然后按索引合并两个数据帧。还有其他解决办法吗?

jez*_*ael 5

shiftjoin,concat或,一起使用assign对于新列名称add_suffix很有用:

df1 = df.add_suffix('1').join(df.shift(-1).add_suffix('2'))
Run Code Online (Sandbox Code Playgroud)
df1 = pd.concat([df.add_suffix('1'), df.shift(-1).add_suffix('2')], axis=1)
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)