将两列合并为一列并用空行分隔 pandas

Append two columns into one and separate them with an empty row pandas

我需要将两列合并为一列并用空行分隔它们

这是当前代码(灵感来自this question):

import pandas as pd

df = pd.DataFrame({'Column 1':['A', 'B', 'C', 'D'],'Column 2':['E', 'F', 'G', 'H'],'Column 3':['I', 'J', 'K', 'L']})
df['col']=df['Column 1'].append(df['Column 2']).reset_index(drop=True)
print(df) 

输出:

  Column 1 Column 2 Column 3 col
0        A        E        I   A
1        B        F        J   B
2        C        G        K   C
3        D        H        L   D

期望输出:

  Column 1 Column 2 Column 3 col
0        A        E        I   A
1        B        F        J   B
2        C        G        K   C
3        D        H        L   D
4      nan      nan      nan nan
5      nan      nan      nan   E
6      nan      nan      nan   F
7      nan      nan      nan   G
8      nan      nan      nan   H

可行吗?

我们需要创建一个 Series 两列,然后使用右连接将列连同额外值添加到数据框中。

使用rightjoin如下:

import pandas as pd

df = pd.DataFrame({'Column 1':['A', 'B', 'C', 'D'],'Column 2':['E', 'F', 'G', 'H'],'Column 3':['I', 'J', 'K', 'L']})
col=df['Column 1'].append(Series(np.nan)).append(df['Column 2']).reset_index(drop=True)
col.name='col'
df = df.join(col, how='right')
print(df)

是的,可以做到

df['col']=df['Column 1']
df=df.append(pd.DataFrame({'Column 2':[np.nan]}).append(df[['Column 2']]).rename(columns={'Column 2':'col'})).reset_index(drop=True)

df
Out[127]: 
  Column 1 Column 2 Column 3  col
0        A        E        I    A
1        B        F        J    B
2        C        G        K    C
3        D        H        L    D
4      NaN      NaN      NaN  NaN
5      NaN      NaN      NaN    E
6      NaN      NaN      NaN    F
7      NaN      NaN      NaN    G
8      NaN      NaN      NaN    H

我的想法是使用pandas.concat:

import pandas as pd

df = pd.DataFrame({'Column 1':['A', 'B', 'C', 'D'],'Column 2':['E', 'F', 'G', 'H'],'Column 3':['I', 'J', 'K', 'L']})
col = df['Column 1'].append(pd.Series(float('nan'))).append(df['Column 2']).reset_index(drop=True)

df = pd.concat([df, col], axis=1)

print(df)

  Column 1 Column 2 Column 3    0
0        A        E        I    A
1        B        F        J    B
2        C        G        K    C
3        D        H        L    D
4      NaN      NaN      NaN  NaN
5      NaN      NaN      NaN    E
6      NaN      NaN      NaN    F
7      NaN      NaN      NaN    G
8      NaN      NaN      NaN    H