在 pandas 中将多个列合并为一个列

Concat several columns in a single one in pandas

我在 excel 中有几个包含多列的文件,我想将每个列合并为一个。 有执行代码吗?

df = pd.read_excel('exemple.xlsx', header=0, na_values='NA')
df.head()

joincolumn = pd.concat((df['dia1'] + df['dia1a'] + df['dia1b'] + df['dia1c'] + df['dia1d'] + df['A2'] + df['A2A'] + df['B2'] + df['B2B'] + df['C2'] + df['C2C'] +df['A3'] + df['A3A'] + df['B3'] + df['B3B'] + df['C3'] + df['C3C']))

这应该是这样的:

0.423
0.469
0.428
0.495
0.448
0.51
0.494
0.425
0.489
0.465

没用!

这可以使用ravel

实现

由于没有提供真实数据,为了表述清楚,假设dialdia1a如下:

df = pd.DataFrame({'dia1':[1, 2, 3, 4],'dia1a':['A', 'B', 'C', 'D']})

然后弄清楚这两列给出:

print(pd.Series(df.values.ravel('F')))

1    2
2    3
3    4
4    A
5    B
6    C
7    D

如果您想保持层次结构,可以使用stack

df = pd.DataFrame({'dia1':[1, 2, 3, 4],'dia1a':['A', 'B', 'C', 'D']})

print(df.stack().reset_index())

将输出

   level_0 level_1  0
0        0    dia1  1
1        0   dia1a  A
2        1    dia1  2
3        1   dia1a  B
4        2    dia1  3
5        2   dia1a  C
6        3    dia1  4
7        3   dia1a  D