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应用于指数谢谢,但唯一的问题是,它不是每次都是第五次观察,有些工作日股市关闭,因此这一天不见了,这会打乱计算。如何为您的解决方案统一数据集?