【问题标题】:Add a value to a column in data frame all rows at once :Python [duplicate]一次向数据框中的所有行中的列添加值:Python [重复]
【发布时间】:2018-10-22 19:59:30
【问题描述】:

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

对于 qty 列,我想根据“sku”中的值向“qty”添加值。值如下所示

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 

【问题讨论】:

    标签: python pandas dataframe


    【解决方案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
    

    【讨论】:

    • 但入门套件值基于数据框中的另一列值
    【解决方案2】:

    你可以使用pd.Series.map:

    df['qty'] += df['sku'].map(starterkit)
    

    这是一个矢量化计算的例子。使用pandas 的一个主要好处是能够执行此类计算而无需求助于 Python 级循环。

    【讨论】:

      猜你喜欢
      • 2018-05-01
      • 2019-05-04
      • 1970-01-01
      • 2016-12-19
      • 1970-01-01
      • 2021-11-24
      • 2020-10-13
      • 1970-01-01
      相关资源
      最近更新 更多