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

如何将pandas DataFrame单列数据重排后追加到另一DataFrame对应行列

解决方案

原有代码问题说明

  • 循环内每次都会重置count = 20,永远取的是前20行数据,不会向后滑动取后续分段
  • append方法是在DataFrame末尾追加行,不是把新的数据扩展为列,所以只会生成1列的结果
  • 切片逻辑错误,没有按窗口滑动取df1的对应分段数据

实现代码

不用编写复杂的循环逻辑,直接用numpy的reshape方法即可完成一维序列到多行多列的转换,不会出现列顺序错乱、缺失的问题:

import pandas as pd
import numpy as np

# 配置单组数据长度
group_len = 20
# 取df1的Close列数值
close_arr = df1['Close'].values

# 方式1:自动按实际数据长度计算可分的组数
# group_num = len(close_arr) // group_len
# 方式2:固定取前100个值分为5组,和你原需求一致
group_num = 5
# 截取对应长度的数值,避免reshape报错
close_arr = close_arr[: group_num * group_len]
# 转换为[组数,单组长度]的二维数组
reshaped_arr = close_arr.reshape(group_num, group_len)

# 生成要求的列名:第一列是Close,后续依次为Close 2到Close 20
col_names = ['Close'] + [f'Close {i}' for i in range(2, group_len + 1)]
# 生成中间DataFrame
temp_df = pd.DataFrame(reshaped_arr, columns=col_names)

# 写入到df2
# 如果df2是空的,直接赋值即可
df2 = temp_df.copy()
# 如果df2原有其他列(如target)需要保留,用以下方式赋值
# df2[col_names] = temp_df[col_names]

补充说明

如果df1的Close列长度不足group_num * group_len,可以先给close_arr补NaN到指定长度再reshape,符合你后续删除NaN值的处理逻辑,不会影响target列的后续填充。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:24:02