【发布时间】:2022-02-08 01:21:46
【问题描述】:
我正在使用 django 从 SQL 数据库中检索数据,然后将其转换为 pandas 数据框。 目标是计算每个人的一些指标以及所有人的整体指标。
计算我的指标后,我想将这些值与上个月进行比较,并将变化计算为百分比。
这大致是这样的:
member_frame = member_frame.truncate(before=(previous_start - timedelta(days=1)))
这给了我从上个月到本月底的所有条目。
然后我计算一些值的总和:
aggregate_avgs = member_frame.groupby(member_frame.index.month).mean().replace(np.inf, 1).fillna(0)
最后计算百分比变化:
avgs_change = aggregate_avgs.pct_change().replace(np.inf, 1).fillna(-1)
如果我们看一下从 1 月到 2 月的变化,就像这样:
target_date
1 -1.000000 -1.000000 -1.000000 -1.0 -1.000000 -1.000000 -1.000000
2 0.142857 0.076923 -0.828571 0.0 -0.587774 -0.699994 -0.507199
这行得通……好吗?因为我只对从第一个日期到第二个日期的变化感兴趣,所以我只取第二行的值。
但如果我在 12 月和 1 月也这样做,我会得到:
target_date
1 -1.00000 -1.000000 -1.000000 -1.0 -1.000000 -1.000000 -1.000000
12 0.02682 0.273444 0.449811 0.0 0.259059 0.424178 0.223225
如您所见,这有点颠倒过来,而且更改实际上是针对错误的月份。
target_date 索引是日期时间索引。
我怀疑如果我在跨年时每周更改一次,也会发生同样的情况。
我做错了什么? 我对 pandas 很陌生,所以这也可能是一个非常容易的错误。
【问题讨论】: