【问题标题】:Multiply filtered rows by constant in pandas将过滤后的行乘以熊猫中的常量
【发布时间】:2017-07-13 05:26:49
【问题描述】:

我检查了this answer,但它只适用于整个列。

我有一个包含 3 列(名称、日期、值)的数据框

     Name         Dt    Value
0    aaaa 2018-01-01      100
1    bbbb 2018-07-02      200
2    aaaa 2019-01-01      300
3    aaaa 2020-01-04      500

我还有一本年度比例因子字典。我想要做的是将一年中的所有值乘以相应的比例因子。

我试着做这样的事情

df[df['Name'] == a & df['Dt'].dt.year == i]['Value'] *= dictionary[i]

这似乎不起作用。有没有办法在不遍历每一行的情况下做到这一点?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    使用locmap

    d = {2018: 100, 2019: 1000, 2020: 10000}
    
    df.loc[
        (df.Name == 'aaaa') & (df.Dt.dt.year == 2018), 'Value'
    ] *= df.Dt.dt.year.map(d)
    
    print(df)
    
       Name         Dt    Value
    0  aaaa 2018-01-01  10000.0
    1  bbbb 2018-07-02    200.0
    2  aaaa 2019-01-01    300.0
    3  aaaa 2020-01-04    500.0
    

    【讨论】:

      猜你喜欢
      • 2022-12-12
      • 1970-01-01
      • 2020-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-22
      • 2018-12-04
      • 1970-01-01
      相关资源
      最近更新 更多