我检查了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]
这似乎并没有奏效。有没有办法在不绕过每一行的情况下做到这一点?
答案 0 :(得分:1)
使用loc
和map
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