【发布时间】:2021-03-05 01:21:52
【问题描述】:
我正在努力寻找一种方法,使用 python pandas 将每月值从 df 乘以每月索引。
我解释: 我有一个传统的时间序列数据集:
Id AAA BBBB CCCC
2017-03-31 0 0 0
2017-04-30 0 0 0
2017-05-31 0 0 0
2017-06-30 0 0 0
2017-07-31 0 0 0
2017-08-31 0 0 0
2017-09-30 0 0 0
2017-10-31 0 0 0
2017-11-30 0 0 0
2017-12-31 0 0 0
2018-01-31 1 0 0
2018-02-28 0 204 0
2018-03-31 0 0 0
2018-04-30 0 0 0
2018-05-31 80 130 0
2018-06-30 0 0 0
2018-07-31 5 252 0
2018-08-31 0 290 0
2018-09-30 0 0 0
2018-10-31 1 230 0
2018-11-30 92 60 0
2018-12-31 0 0 0
2019-01-31 0 40 0
2019-02-28 16 48 0
2019-03-31 0 0 0
2019-04-30 0 224 0
2019-05-31 30 270 0
2019-06-30 0 0 0
2019-07-31 13 284 0
2019-08-31 0 0 0
2019-09-30 0 112 0
2019-10-31 0 134 0
2019-11-30 0 0 0
2019-12-31 0 50 0
2020-01-31 0 0 0
2020-02-29 0 0 0
2020-03-31 0 0 0
2020-04-30 10 67 0
2020-05-31 0 0 0
2020-06-30 0 54 1
我有每月索引:
Id AAA BBBB CCCC
1 0.055046 0.212131 0.0
2 0.880734 1.336427 0.0
3 0.000000 0.000000 0.0
4 0.412844 1.157441 0.0
5 4.541284 1.590984 0.0
6 0.000000 0.214783 12.0
7 0.990826 2.842559 0.0
8 0.000000 1.537952 0.0
9 0.000000 0.593968 0.0
10 0.055046 1.930394 0.0
11 5.064220 0.318197 0.0
12 0.000000 0.265164 0.0
目标是将第一个数据集的每个月除以第二个数据集的相应索引。 即 2019 年 6 月 30 日起产品 AAA 的值应除以指数为 6 的季节指数
如何在 pandas 中做到这一点?
【问题讨论】:
-
你的CCCC月度指数怎么办?这显然是除以零。
-
我计划使用过滤器来删除索引为 0 的列,或者将它们调整为超过 0。我的问题更多是关于使用每月各自的常量实现多月计算的方法跨度>
-
df.set_index(df['Id'].dt.month).merge(df2.set_index('Id'), how='left', left_index=True, right_index=True)在此之后您可以划分您选择的列 -
我尝试了你的代码并给了我错误:
AttributeError: 'DatetimeIndex' object has no attribute 'dt'