Python 为什么是熊猫。最后(';1W';)don';不显示最后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-

我正在使用.last('1W')从以Days为索引的Pandas数据帧中提取最大值。 我的数据来自每月的第一天(2020-09-01 00:00:00)。在我到达今天(2020年9月7日星期一)之前,它似乎工作正常。起初,我假设.last()从起始值(我猜是星期日)开始计算一周的最后几天,而不是最后7天(我假设是),但是,让我困惑的是,如果我延长时间,结果数据帧也会移动第一个样本

我尝试用以下方法来模拟:

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开始?