如何将DataFrame中的每三列转换为行形式?
解决方案
你可以借助 pandas 结合 numpy 的数组重塑功能快速实现需求,步骤如下:
1. 构造示例 DataFrame(已有数据可跳过)
import pandas as pd data = { 'col1': ['a1', 'a2'], 'col2': ['b1', 'b2'], 'col3': ['c1', 'c2'], 'col4': ['d1', 'd2'], 'col5': ['e1', 'e2'], 'col6': ['f1', 'f2'], 'col7': ['g1', 'g2'], 'col8': ['h1', 'h2'], 'col9': ['i1', 'i2'] } df = pd.DataFrame(data)
2. 执行列转行操作
核心是利用数组重塑,将原数据按每3列一组转换为行:
# 将DataFrame转为numpy数组后重塑,再转回DataFrame并设置列名 result_df = pd.DataFrame(df.values.reshape(-1, 3), columns=['col1', 'col2', 'col3'])
运行后得到的 result_df 就是目标格式:
col1 col2 col3 0 a1 b1 c1 1 a2 b2 c2 2 d1 e1 f1 3 d2 e2 f2 4 g1 h1 i1 5 g2 h2 i2
原理说明
df.values:将DataFrame转换为numpy二维数组,保留原始数据的顺序reshape(-1, 3):自动计算行数(总元素数 ÷ 3),固定列数为3,实现每3列数据转为一行的效果- 最后重新指定列名,匹配目标格式
内容的提问来源于stack exchange,提问作者gh1222
相关产品推荐
相关产品推荐

