Python实现:基于SKU批量为DataFrame的Qty列添加对应值
搞定Pandas按SKU批量更新Qty列的需求
嘿,我来帮你解决这个批量更新DataFrame列的问题!
先明确你的需求
你手头有这样一个初始DataFrame:
import pandas as pd df = pd.DataFrame({ 'proid': ['p009', 'p009', 'p008', 'p008', 'p008'], 'sku': ['SKPK', 'SKKP', 'SKPK', 'SKC1', 'SKKP'], 'qty': [0.0, 2.0, 0.0, 4.0, 0.0] })
还有一个定义了SKU对应增量的字典:
starterkit = {"SKKP":4,'SKP1':3,'SKPK':1,'SKC1':1 }
你想要实现的是:根据sku列的值,把starterkit里对应的数值加到qty列上,最终得到你期望的结果表。
最简单高效的实现方式
不用写一堆if判断或者循环,Pandas自带的map()方法就能轻松搞定:
# 把sku对应的增量映射出来,直接加到qty列上 df['qty'] += df['sku'].map(starterkit)
看看运行后的结果
执行完上面的代码,你就会得到完全符合预期的DataFrame:
proid sku qty 0 p009 SKPK 1.0 1 p009 SKKP 6.0 2 p008 SKPK 1.0 3 p008 SKC1 5.0 4 p008 SKKP 4.0
额外小提示
如果你的DataFrame里有一些sku不在starterkit字典里,map()会返回NaN,这时候可以用fillna(0)来避免qty列出现空值,代码改成这样就行:
df['qty'] += df['sku'].map(starterkit).fillna(0)
这样那些找不到对应增量的sku,qty就保持原来的值不变啦。
内容的提问来源于stack exchange,提问作者ila
相关产品推荐
相关产品推荐

