将过滤后的行乘以熊猫中的常量

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】:

使用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

【讨论】:

以上是关于将过滤后的行乘以熊猫中的常量的主要内容,如果未能解决你的问题,请参考以下文章

如何过滤熊猫系列索引中的字符串

按时间戳列过滤/选择熊猫数据帧的行

如何通过熊猫过滤满足正则表达式的行

如何按字符串过滤熊猫数据框?

如何根据条件过滤后的熊猫数据框来导出列

如何知道使用熊猫删除的行数