我有来自df的以下数据
proid sku qty
0 p009 SKPK 0.0
1 p009 SKKP 2.0
2 p008 SKPK 0.0
3 p008 SKC1 4.0
4 p008 SKKP 0.0
要数量列,我想为“数量”添加价值'基于' sku'中的价值。该值如下所示
starterkit = {"SKKP":4,'SKP1':3,'SKP1':3,'SKPK':1,'SKC1':1 }
想做类似
的事情if df.sku == 'SKKP' df.qty += starterkit['SKKP']
结果数据框应为
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
答案 0 :(得分:1)
使用map
:
starterkit = {"SKKP":4,'SKP1':3,'SKP1':3,'SKPK':1,'SKC1':1 }
df.qty += df.sku.map(starterkit)
print (df)
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
答案 1 :(得分:0)
您可以使用pd.Series.map
:
df['qty'] += df['sku'].map(starterkit)
这是矢量化计算的一个例子。使用pandas
的一个主要好处是能够在不诉诸Python级循环的情况下执行此类计算。