Python 如何将一周中的几天划分为一周,并对其执行功能

Python 如何将一周中的几天划分为一周,并对其执行功能,python,pandas,dataframe,Python,Pandas,Dataframe,所以我有一个这样的股市数据 Date Open High Low Close Weekday 0 2007-09-17 4518.450195 4549.049805 4482.850098 4494.649902 Monday 1 2007-09-18 4494.100098 4551.799805 4481.549805 4546.200195 Tuesday 2 2007-09-19 4550

所以我有一个这样的股市数据

    Date           Open        High        Low        Close     Weekday

0   2007-09-17  4518.450195 4549.049805 4482.850098 4494.649902 Monday
1   2007-09-18  4494.100098 4551.799805 4481.549805 4546.200195 Tuesday
2   2007-09-19  4550.25     4739.0      4550.25     4732.350098 Wednesday
3   2007-09-20  4734.850098 4760.850098 4721.149902 4747.549805 Thursday
4   2007-09-21  4752.950195 4855.700195 4733.700195 4837.549805 Friday

5   2007-09-24  4837.149902 4941.149902 4837.149902 4932.200195 Monday
6   2007-09-25  4939.100098 4953.899902 4878.149902 4938.850098 Tuesday
7   2007-09-26  4937.600098 4980.850098 4930.350098 4940.5      Wednesday
8   2007-09-27  4942.700195 5016.399902 4942.700195 5000.549805 Thursday
9   2007-09-28  4996.450195 5055.799805 4996.450195 5021.350098 Friday

10  2007-10-01  5021.5      5089.299805 5001.350098 5068.950195 Monday
11  2007-10-03  5069.0      5261.350098 5034.149902 5210.799805 Wednesday
12  2007-10-04  5211.649902 5233.100098 5126.049805 5208.649902 Thursday
13  2007-10-05  5208.149902 5248.549805 5164.5      5185.850098 Friday
(为了更好地表现视觉效果,我在周五之后设置了间隙)

我已将日期字符串转换为
Weekday
列中的一周中的几天。我想做的是,每周我都想找到,哪一天的开盘价最低,这一天的增量是可变的。所以在样本数据中应该是

第1周(指数0-4)-周二开盘价最低

第二周(指数5-9)-周一开盘价最低

第3周(指数10-13)-周一开盘价最低

因此,它应该打印
星期一-2、星期二-1、星期三-0、星期四-0、星期五-0


我怎样才能做到这一点?

似乎您希望每隔5次obs进行
groupby
-

df.groupby(df.index // 5)['Open'].min()

0    4494.100098
1    4837.149902
2    5021.500000
Name: Open, dtype: float64
以每周最低开盘价获取一周中的某一天-

df.loc[df.groupby(df.index // 5)['Open'].idxmin(),'Weekday']

1     Tuesday
5      Monday
10     Monday
Name: Weekday, dtype: object
获取月数-

df.loc[df.groupby(df.index // 5)['Open'].idxmin(),'Weekday'].value_counts()

Monday     2
Tuesday    1
Name: Weekday, dtype: int64
更新

要处理缺少的天数,请利用
Date
列进行分组-

df.loc[df.groupby(df['Date'].dt.week)['Open'].idxmin(),'Weekday'].value_counts()

Monday     2
Tuesday    1
Name: Weekday, dtype: int64

您可以使用以下代码计算日期的周数,然后使用groupby计算最低开盘价

df['week'] = df['date'].dt.week
df.groupby('week')['Open'].min()

在此之后,您可以获得相应的日期,然后获得相应日期的计数。

df.rolling('1W')
将为您提供1周的窗口,它有
.min()
来获得最小值。从这里开始,就需要格式化来获得您想要的格式want@noah我尝试了这个,但得到的错误是窗口必须是整数。您是否在=日期时滚动了
?否则,它会尝试将datetime应用于指数谢谢,但唯一的问题是,它不是每次都是第五次观察,有些工作日股市关闭,因此这一天不见了,这会打乱计算。如何为您的解决方案统一数据集?