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

Pandas按条件将datum3、value3值映射到datum2、value2列的实现问题

问题原因

你原来的写法df['value2']=df['value3'][df['datum2']=='NGVD29']中,右侧只对满足datum2 == 'NGVD29'的行返回对应value3的值,其余行返回NaN,直接赋值给整列value2时,不满足条件的行就会被覆盖为NaN,这就是其他行value2被清空的原因。

正确实现方式

使用loc同时限定赋值的行范围,只对满足条件的行做修改,不影响其余行的原值:

# 先筛选出datum2为NGVD29的行
mask = df['datum2'] == 'NGVD29'

# 对满足条件的行,分别替换datum2和value2的值
df.loc[mask, 'datum2'] = df.loc[mask, 'datum3']
df.loc[mask, 'value2'] = df.loc[mask, 'value3']

# 操作完成后删除不需要的列
df = df.drop(columns=['datum3', 'value3'])

内容的提问来源于stack exchange,提问作者Mr. Geologist

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:57:03