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

Pandas如何将单列DataFrame按指定行数拆分生成多列新表

pandas按固定行数拆分单列生成多列DataFrame方案

报错原因

原代码硬编码了固定长度索引index=range(0,10),强制要求所有拆分后的列长度必须等于预设值。当原数据总行数不能被每列预设行数整除时,最后一个拆分块长度不足,就会触发ValueError: Length of values does not match length of index错误。

实现方案

不需要手动预设每列索引长度,pd.concat按列拼接时会自动按索引对齐,短列缺失位置自动填充NaN,直接按拆分块本身长度构造Series即可。

按「每列固定行数」拆分(自动计算总列数)

import pandas as pd
import numpy as np

# 配置每列存放的行数
per_col_rows = 8
# 提取待拆分的单列数据
target_arr = x['TEST'].values
# 按步长切分数组,自动适配最后一块长度
split_chunks = [target_arr[i:i+per_col_rows] for i in range(0, len(target_arr), per_col_rows)]
# 拼接为新DataFrame
result = pd.concat(
    [pd.Series(chunk, name=f'y{idx}') for idx, chunk in enumerate(split_chunks)],
    axis=1
)

按「固定总列数」拆分(自动计算每列行数)

如果需要直接指定拆分后的总列数,用np.array_split切分即可,同样不需要硬编码索引:

# 配置拆分后的总列数
total_cols = 4
split_chunks = np.array_split(x['TEST'].values, total_cols)
result = pd.concat(
    [pd.Series(chunk, name=f'y{idx}') for idx, chunk in enumerate(split_chunks)],
    axis=1
)

效果说明

以31行数据、每列拆8行为例,最终生成4列:前3列各8行数据,第4列7行数据,第8行索引位置第4列自动填充NaN,完全适配各拆分块的实际长度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 00:33:24