【发布时间】:2019-10-03 22:38:42
【问题描述】:
我想在我的 DataFrame 中返回每周表现最好的 10 个(按平均计算)变量。大约是 2 年的数据
我正在使用 Python 来解决这个问题,但最终也想用 SQL 来解决。
我已经能够生成返回最近一周前 10 名的代码,但希望每周都有结果
- 创建创建日期时间范围的 df
range_max = rtbinds['pricedate'].max()
range_min = range_max - datetime.timedelta(days=7)
sliced_df = rtbinds[(rtbinds['pricedate'] >= range_min)
& (rtbinds['pricedate'] <= range_max)]
- 按“影子”分组
sliced_df.groupby(['pricedate','cons_name']).aggregate(np.mean)
.sort_values('shadow').head(10)
- 返回第一周的数据。
pricedate cons_name shadow
2019-04-26 TEMP71_24753 -643.691
2019-04-27 TMP175_24736 -508.062
2019-04-25 TMP109_22593 -383.263
2019-04-23 TEMP48_24759 -376.967
2019-04-29 TEMP71_24753 -356.476
TMP175_24736 -327.230
TMP273_23483 -303.234
2019-04-27 TEMP71_24753 -294.377
2019-04-28 TMP175_24736 -272.603
TMP109_22593 -270.887
但是,我想要一个返回每周前 10 名的列表,直到我的数据的最早日期
【问题讨论】:
-
请您提供
rtbinds的示例并检查我是否正确编辑了脚本? -
您好,抱歉 rtbinds 是带有 cols [priceate, cons_name, shadow] 的数据框的名称
-
你想要每天或每周的阴影平均值吗?你现在每天都有。
-
我想要一周内平均排名前 10 位的“cons_name”
标签: python pandas numpy group-by