Python 为什么是熊猫。最后(';1W';)don';不显示最后7天?
我正在使用.last('1W')从以Days为索引的Pandas数据帧中提取最大值。 我的数据来自每月的第一天(2020-09-01 00:00:00)。在我到达今天(2020年9月7日星期一)之前,它似乎工作正常。起初,我假设.last()从起始值(我猜是星期日)开始计算一周的最后几天,而不是最后7天(我假设是),但是,让我困惑的是,如果我延长时间,结果数据帧也会移动第一个样本 我尝试用以下方法来模拟:Python 为什么是熊猫。最后(';1W';)don';不显示最后7天?,python,pandas,Python,Pandas,我正在使用.last('1W')从以Days为索引的Pandas数据帧中提取最大值。 我的数据来自每月的第一天(2020-09-01 00:00:00)。在我到达今天(2020年9月7日星期一)之前,它似乎工作正常。起初,我假设.last()从起始值(我猜是星期日)开始计算一周的最后几天,而不是最后7天(我假设是),但是,让我困惑的是,如果我延长时间,结果数据帧也会移动第一个样本 我尝试用以下方法来模拟: import pandas as pd i = pd.date_range('2020-
import pandas as pd
i = pd.date_range('2020-09-01', periods=24*6+5, freq='1H')
values = range(0, 24*6+5 )
df = pd.DataFrame({'A': values}, index=i)
print(df)
print(df.last('1W'))
输出:
A
2020-09-01 00:00:00 0
2020-09-01 01:00:00 1
2020-09-01 02:00:00 2
2020-09-01 03:00:00 3
2020-09-01 04:00:00 4
... ...
2020-09-07 00:00:00 144
2020-09-07 01:00:00 145
2020-09-07 02:00:00 146
2020-09-07 03:00:00 147
2020-09-07 04:00:00 148
[149 rows x 1 columns]
A
2020-09-06 05:00:00 125
2020-09-06 06:00:00 126
2020-09-06 07:00:00 127
2020-09-06 08:00:00 128
2020-09-06 09:00:00 129
2020-09-06 10:00:00 130
2020-09-06 11:00:00 131
2020-09-06 12:00:00 132
2020-09-06 13:00:00 133
2020-09-06 14:00:00 134
2020-09-06 15:00:00 135
2020-09-06 16:00:00 136
2020-09-06 17:00:00 137
2020-09-06 18:00:00 138
2020-09-06 19:00:00 139
2020-09-06 20:00:00 140
2020-09-06 21:00:00 141
2020-09-06 22:00:00 142
2020-09-06 23:00:00 143
2020-09-07 00:00:00 144
2020-09-07 01:00:00 145
2020-09-07 02:00:00 146
2020-09-07 03:00:00 147
2020-09-07 04:00:00 148
Process finished with exit code 0
2020-09-01 00:00:00时df中的第一个值为0
但是,
当我尝试应用last('1W')时,选择从2020-09-06 05:00:00到最后一个值,而不是最后7天。。。正如我所设想的,如果操作员从周日工作到周日,也不会从2020-09-06 00:00:00开始。如果您要查找7天的偏移量,为什么不使用
天
偏移量,而不是周
“1W”
偏移量与“7D”
不同,因为在最后一行为周二的两周数据集中,从周一开始的“1W”
只有两天<代码>“2W”将包括前一周(周一至周日)+(周一至周二)
通过直接调用offset类,可以看到更改一周的开始日期的效果,如下所示:
week_offset = pd.tseries.offsets.Week(n=1, weekday=0) # week starting Monday
day_offset = pd.tseries.offsets.Day(n=7) # or simply "7D"
df.last(day_offset)
谢谢,我走这边。我现在还不明白的是,比赛开始时的时间在变。不应该在00:00开始?