首页 > 解决方案 > 如何在熊猫中将四列excel数据作为两行

问题描述

我在excel中有四列数据,要转置为两行。第一列作为第二列数据的标题行,第三列作为第四列数据的标题,如下所示:

数据如下

A    1      G   7
B    2      H   8
C    3      I   9
D    4      J   10
E    5      K   11
F    6      L   12

并且需要转置

A  B  C D  E  F  G  H  I  J  K  L
1  2  3 4  5  6  7  8  9  10 11 12 

感谢您的宝贵意见。

标签: pythonpython-3.xexcelpandasdataframe

解决方案


对于使用4, 6,10列的通用解决方案,通过索引选择对和取消对列,在 numpy 数组中展平并传递给DataFrame构造函数:

c = df.iloc[:, ::2].T.to_numpy().ravel()
v = df.iloc[:, 1::2].T.to_numpy().ravel()

df = pd.DataFrame([v], columns=c)
print (df)
   A  B  C  D  E  F  G  H  I   J   K   L
0  1  2  3  4  5  6  7  8  9  10  11  12

或者,如果想使用 pandas 解决方案创建MultiIndex模数和整数除以np.arange列的长度,然后重塑DataFrame.stack,然后转置和一些数据清理:

a = np.arange(len(df.columns))

df.columns = [a % 2, a // 2]
df = (df.stack()
        .sort_index(level=1)
        .set_index(0)[[1]]
        .T
        .rename_axis(None, axis=1)
        .reset_index(drop=True))
print (df)
   A  B  C  D  E  F  G  H  I   J   K   L
0  1  2  3  4  5  6  7  8  9  10  11  12

推荐阅读