如何将DataFrame中每50行横向堆叠为单行?
300行×6列DataFrame分块横向堆叠实现方案
针对你需求的300行×6列DataFrame,将每50行×6列横向堆叠为1行×300列,这里提供两种高效的实现方法:
方法一:Pandas分组处理
适合需要保留分组逻辑或后续有扩展需求的场景:
import pandas as pd import numpy as np # 构造示例DataFrame(替换成你的实际数据) df = pd.DataFrame(np.random.randint(0, 100, size=(300, 6))) # 按索引每50行分组,将每组扁平化后转为单行,再拼接结果 result = df.groupby(df.index // 50).apply(lambda chunk: pd.Series(chunk.values.flatten())).reset_index(drop=True)
df.index // 50生成0-5的分组标识,将原DataFrame拆分为6个50行×6列的子块chunk.values.flatten()将每个子块从二维数组转为一维(长度300)- 最终得到6行×300列的结果,每一行对应原数据中连续50行横向堆叠后的内容
方法二:Numpy数组重塑(更高效)
如果数据量较大,推荐用Numpy的reshape操作,速度更快:
import pandas as pd import numpy as np # 构造示例DataFrame df = pd.DataFrame(np.random.randint(0, 100, size=(300, 6))) # 直接重塑数组结构,再转回DataFrame result = pd.DataFrame(df.values.reshape(6, 50*6))
df.values.reshape(6, 50*6)一步将300×6的数组转为6×300的数组,完成分块和横向堆叠- 这种方法无需分组操作,性能更优,适合大规模数据处理
两种方法最终输出的结果结构一致,都是6行×300列的DataFrame,每行对应原数据中50行横向拼接后的内容。
内容的提问来源于stack exchange,提问作者Sthwonderful Nicksaid
相关产品推荐
相关产品推荐

