Pandas Python如何实现Item Description列含BUY2时UNIT列乘以2
原代码问题说明
- 你使用
.any()做全局判断,只要整列存在任意1个包含BUY2的内容就会对全列UNIT做乘2操作,不符合「仅修改对应行」的需求 - 计算
DF['UNIT'] * 2后没有赋值回原DataFrame的对应列,修改结果不会生效
修正代码
推荐用pandas条件索引直接对匹配行赋值,写法如下:
# 筛选Item_Description包含BUY2的行,将对应行的UNIT值乘2后回写 DF.loc[DF['Item_Description'].str.contains('BUY2'), 'UNIT'] *= 2
如果Item_Description列存在空值,可以加na=False参数避免运行报错:
DF.loc[DF['Item_Description'].str.contains('BUY2', na=False), 'UNIT'] *= 2
处理后效果
UNIT Item_Description 0 2 BUY1 1 4 BUY1 2 14 BUY2 3 4 BUY3 4 12 BUY3
内容的提问来源于stack exchange,提问作者Trunks
相关产品推荐
相关产品推荐

