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

Pandas:在两个DataFrame间拆分并复制列值

解决Pandas DataFrame按位置拆分列赋值的问题

这问题其实挺常见的,核心就是避开Pandas默认的索引对齐机制,直接按位置把Old的Values列拆分成New的两列就行。下面给你两种简单可靠的实现方式,附示例演示:

方法一:用.values绕过索引对齐

直接把截取后的Series转换成numpy数组,这样Pandas就不会按索引匹配,而是严格按位置顺序赋值:

import pandas as pd

# 构造示例数据(用6行/3行模拟你的96行/48行场景)
Old = pd.DataFrame({'Values': [1,2,3,40,50,60]})
New = pd.DataFrame(index=range(3), columns=['First', 'Second'])

# 前48行(示例中是前3行)赋值给First列
New['First'] = Old['Values'].iloc[:48].values
# 后48行(示例中是后3行)赋值给Second列
New['Second'] = Old['Values'].iloc[48:].values

执行后New的结果完全符合预期:

First  Second
0      1      40
1      2      50
2      3      60

方法二:重置索引后赋值

如果不想依赖numpy数组,也可以给截取后的Series重置索引(丢弃原索引),让它和New的索引完全匹配:

# 前48行重置索引后赋值
New['First'] = Old['Values'].iloc[:48].reset_index(drop=True)
# 后48行重置索引后赋值
New['Second'] = Old['Values'].iloc[48:].reset_index(drop=True)

为什么直接赋值会出问题?

Pandas默认会根据索引对齐数据——如果Old的索引和New的索引不完全匹配(比如Old的索引是不连续、非顺序的),直接赋值就会出现NaN或者错位的情况。而上面两种方法都是强制按位置而非索引来对应数据,完美解决这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:54:49