python - 如何在熊猫中将四列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
感谢您的宝贵意见。
解决方案
对于使用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
推荐阅读
- python - Jupyterlab 内联交互式绘图
- angular - Angular 5自动填充表单Keyup vs keydown vs keypress
- bootstrap-4 - 带有侧面导航栏的 Bootstrap scrollspy 不起作用
- c# - 如何在 ajax 时间选择器中禁用时间
- kotlin - 如何找到不为空的第一个元素的方法结果?
- python - 从 BeautifulSoup 结果集中分离元素
- python - 协方差矩阵应该相等但不相等
- java - 使用 Xfinium.Graphics 在 PDF 文档上渲染椭圆形
- c# - 我可以从 SignalR 客户端连接到烧瓶服务器吗
- android - 前台服务重启后多次接收BluetoothGattCallback