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

Pandas多条件修改列值异常:所有行均显示Walmart Marketplace

问题原因及解决方案

核心问题1:列名不匹配

你的DataFrame里列名是default seller(带空格),但代码里用的是default_seller(下划线),导致row.get('default_seller','')永远返回空字符串。空字符串不在你的amazon_seller_list里,所以所有Amazon行都会被错误修改;如果同时你的walmart_seller_list定义有误(比如是空列表),或者循环索引出现混乱,就会导致所有行被改成Walmart Marketplace。

核心问题2:循环修改DataFrame的风险

用iterrows()循环修改DataFrame容易出现索引混乱、效率低下的问题,更推荐用矢量化操作处理。

修正后的代码

先正确定义卖家列表,再用矢量化条件判断完成修改:

import numpy as np

# 定义目标卖家列表
amazon_seller_list = ['amazon','amazon.com','amazon global store uk','amazon warehouse']
walmart_seller_list = ['walmart.com']

# 处理Amazon场景:source为Amazon,且default seller不在目标列表中
amazon_condition = (final_df['source'] == 'Amazon') & \
                   (~final_df['default seller'].str.lower().isin(amazon_seller_list))
final_df.loc[amazon_condition, 'source'] = 'Amazon Marketplace'

# 处理Walmart场景:source为Walmart,且seller不在目标列表中
walmart_condition = (final_df['source'] == 'Walmart') & \
                    (~final_df['seller'].str.lower().isin(walmart_seller_list))
final_df.loc[walmart_condition, 'source'] = 'Walmart Marketplace'

额外说明

  • 数据中的字符串'na'经str.lower()转成'na',不在目标列表中,会被正确判定为需要修改的情况(比如示例里的第二、第三行Amazon)。
  • 矢量化操作比循环效率高得多,尤其适合大数据量场景,同时避免了循环带来的索引问题。

内容的提问来源于stack exchange,提问作者Gururaj B R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 10:42:29