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

求助:DataFrame多条件替换countyfips值失败,遍历代码无效

问题排查与修正

核心错误

你的代码里赋值语句误用了双等号==(比较运算符)而非单等号=(赋值运算符),这导致代码仅执行了一次无意义的比较操作,根本没有将5097赋值给目标行的countyfips列。

修正方案

方案1:修复循环写法

将赋值处的==替换为=即可:

annual_data = annual_data[['BUYER_COUNTY', 'BUYER_STATE', 'year', 'DOSAGE_UNIT', 'countyfips']]

for index, values in annual_data.iterrows():
    if (values['BUYER_STATE'] == 'AR') and (values['BUYER_COUNTY'] == 'MONTGOMERY'):
        annual_data.at[index, 'countyfips'] = 5097  # 修正赋值运算符
print(annual_data)

方案2:高效的矢量化操作(推荐)

Pandas原生支持批量数据操作,用loc直接定位符合条件的行进行赋值,比循环迭代效率高得多,尤其适合大数据集:

annual_data = annual_data[['BUYER_COUNTY', 'BUYER_STATE', 'year', 'DOSAGE_UNIT', 'countyfips']]

# 批量定位条件行并赋值
annual_data.loc[
    (annual_data['BUYER_STATE'] == 'AR') & (annual_data['BUYER_COUNTY'] == 'MONTGOMERY'),
    'countyfips'
] = 5097

print(annual_data)

额外提示

如果countyfips列原本为字符串类型(原取值为'NA'),直接赋值数值5097会导致列类型混合,建议统一类型:

  • 若需字符串类型,赋值'5097'
  • 若需数值类型,可先将原'NA'替换为pd.NA,再赋值数值5097

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:35:17