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

如何为索引不同的同长度DataFrame实现列赋值操作?

解决方法

因为pandas赋值时默认会按索引匹配,所以直接赋值才会出现不匹配的NaN。不用重置索引的话,有以下几种高效的实现方式:

方法1:直接赋值底层数值数组

利用Series.values直接获取数组,跳过索引匹配逻辑,按位置赋值,这是开销最低的方式:

import pandas as pd

first = pd.DataFrame({"index": [0, 15, 30], "value": [2.2, 2.2, 2.2]})
second = pd.DataFrame({"value": [3.2, 3.2, 3.2]})
first = first.set_index("index")

# 直接赋值values数组
first['value'] = second['value'].values

方法2:使用to_numpy()方法

和values效果一致,是pandas推荐的更清晰的写法:

first['value'] = second['value'].to_numpy()

方法3:通过iloc按位置赋值

利用iloc定位所有行,强制按位置赋值:

first['value'] = second['value'].iloc[:]
# 或者更明确的写法
first.iloc[:, first.columns.get_loc('value')] = second['value'].iloc[:]

这些方法都不会修改原DataFrame的索引结构,完全按行的位置对应赋值,避免了reset_index的额外开销。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 03:21:36