在pandas中将常量乘以常量

时间:2017-02-22 22:48:35

标签: python pandas

我检查了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]

这似乎并没有奏效。有没有办法在不绕过每一行的情况下做到这一点?

1 个答案:

答案 0 :(得分: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