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

如何在两个DataFrame间按相同Date替换RPM值?

解决方法

方法1:使用update方法(推荐)

update方法会直接在原DataFrame上修改,根据索引匹配替换对应列的值,完美适配这种按主键匹配替换的场景:

import pandas as pd

# 构造你的DataFrame
df1 = pd.DataFrame({'Date': [0,1,2,3,4,5,6,7], 'RPM': [0]*8})
df2 = pd.DataFrame({'Date': [0,2,4,6], 'RPM': [0,2,4,6]})

# 将Date设为索引实现匹配替换,最后恢复原索引
df1.set_index('Date', inplace=True)
df2.set_index('Date', inplace=True)
df1.update(df2)
df1.reset_index(inplace=True)

print(df1)

运行后输出:

Date  RPM
0     0  0.0
1     1  0.0
2     2  2.0
3     3  0.0
4     4  4.0
5     5  0.0
6     6  6.0
7     7  0.0

方法2:字典映射替换

先将df2的Date与RPM转为字典,再通过map匹配替换,未匹配到的保留原数值:

# 构建Date到RPM的映射字典
rpm_map = df2.set_index('Date')['RPM'].to_dict()

# 替换df1的RPM列
df1['RPM'] = df1['Date'].map(rpm_map).fillna(df1['RPM'])

为什么replace方法没生效?

replace默认是值对值的直接替换,比如直接调用df1['RPM'].replace(df2['RPM']),它只会替换两个DataFrame中RPM值完全相等的元素,不会关联Date列的对应关系,自然达不到按Date匹配替换的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 18:30:28