将过滤后的行乘以熊猫中的常量
Posted
技术标签:
【中文标题】将过滤后的行乘以熊猫中的常量【英文标题】: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]
这似乎不起作用。有没有办法在不遍历每一行的情况下做到这一点?
【问题讨论】:
【参考方案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
【讨论】:
以上是关于将过滤后的行乘以熊猫中的常量的主要内容,如果未能解决你的问题,请参考以下文章