如何将pandas单列数据周期性自动分配生成多个新列
实现方案
核心思路
针对大数据量场景,直接使用numpy的维度重塑能力完成拆分,时间复杂度仅为O(1)(底层仅修改数组元数据,不复制数据),效率远高于循环遍历方案。
完整代码
你可以先设定要拆分的列数(也就是周期长度),比如示例中是每3个数值拆为一行对应3列,设置n_cols=3即可,列数可按需调整:
import pandas as pd import numpy as np # 你的原始数据生成逻辑 numbers = range(1,16) df = pd.DataFrame(numbers, columns=['sequence']) # 配置拆分的列数,可根据业务需求修改 n_cols = 3 # 核心逻辑:维度重塑 # 若总长度无法被列数整除,自动补NaN保证维度合法,避免报错 total_len = len(df) pad_len = (n_cols - total_len % n_cols) % n_cols pad_values = np.pad(df['sequence'].values, (0, pad_len), constant_values=np.nan) # 生成最终目标DataFrame result = pd.DataFrame(pad_values.reshape(-1, n_cols), columns=[f'col{i+1}' for i in range(n_cols)])
效果说明
针对你提供的示例数据,运行后输出的result结构和目标示例完全一致:第一行是1、2、3,第二行是4、5、6,依此类推到最后一行13、14、15。如果实际业务中数据长度无法被列数整除,代码会自动在末尾补NaN,不需要额外处理边界情况。
内容的提问来源于stack exchange,提问作者Hugo V
相关产品推荐
相关产品推荐

