我想返回我的数据帧中每周表现最好的10个变量。这是大约2年的数据
我正在使用Python来解决这个问题,但是,我最终还是希望用SQL来解决这个问题。你知道吗
我已经能够产生代码,返回最近一周的前10名,但是,希望每周的结果
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名
heads up
pd.sort_values
默认情况下是按升序排序的,因此当您使用head(10)
时,如果我们考虑实数的自然排序,它实际上是最差的10。你知道吗对于你的问题,这里有一个解决方案
首先,我们需要创建一些列来标识一年中的星期(rtbin重命名为df):
然后我们将数据按
['year', 'week', 'cons_name']
分组:您现在应该得到一个数据帧,其中每个(年、周)只有一个带有平均阴影的cons\u名称记录。你知道吗
然后我们将每年(每年、每周)选出前10名
这会给你想要的结果。你知道吗
相关问题 更多 >
编程相关推荐