You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将DataFrame按每1000行切片后存入新DataFrame各列

Pandas 按行切分数据块并转为新DataFrame列的实现方法

核心思路

针对100万行刚好可被1000整除的时间序列数据,优先使用numpy向量化维度转换实现,避免低效率的循环切片,最终输出1000行、1000列的新DataFrame,每一列对应一个1000行的原始数据块。

实现步骤

  • 先校验原始数据行数,确认可被切分块大小整除,避免数据错位
  • 提取目标列的数值数组,通过reshape直接做维度重组
  • 数组转置后生成新DataFrame,按需设置列名即可

代码示例

import pandas as pd
import numpy as np

# df 为你持有的100万行原始时间序列DataFrame,假设目标数值列名为 ts
chunk_size = 1000
# 行数校验,若存在尾部不足1000行的残块,可提前选择补值或丢弃
assert len(df) % chunk_size == 0, "数据行数无法被块大小整除,请先处理尾部残块"

# 核心转换:纯向量化操作无循环,处理百万行数据耗时毫秒级
chunk_array = df["ts"].to_numpy().reshape(-1, chunk_size).T

# 生成新DataFrame,列名按block_0 到 block_999 规则命名
new_df = pd.DataFrame(
    chunk_array,
    columns=[f"block_{idx}" for idx in range(chunk_array.shape[1])]
)

注意事项

  • 不要使用for循环逐块切片再拼接列的写法,数据量较大时循环的性能开销会非常高
  • 如果原始DataFrame包含多列字段,不建议强行压缩到单列存储,可改用多层索引DataFrame或块列表的形式保存,避免丢失结构化信息
  • 如果需要追溯每个块对应的原始时间范围,可单独生成块元信息表,记录每个列名对应的原始数据起止索引即可

内容的提问来源于stack exchange,提问作者toben aus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 11:33:14