一次向所有行的数据框中的列添加值:Python

时间:2018-05-12 16:53:22

标签: python pandas dataframe

我有来自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 

2 个答案:

答案 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级循环的情况下执行此类计算。