Python 确定特定时间内的最小值和最大值
我有一个类似于以下的数据帧:Python 确定特定时间内的最小值和最大值,python,pandas,time-series,Python,Pandas,Time Series,我有一个类似于以下的数据帧: df = pd.DataFrame({'ticker':['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'], 'date':['2020-05-01 09:30:00', '2020-05-01 09:31:00', '2020-05-01 09:32:00', '2020-05-01 09:33:00', '2020
df = pd.DataFrame({'ticker':['A', 'A', 'A', 'A', 'A',
'B', 'B', 'B', 'B', 'B'],
'date':['2020-05-01 09:30:00', '2020-05-01 09:31:00', '2020-05-01 09:32:00', '2020-05-01 09:33:00', '2020-05-01 09:34:00',
'2020-05-01 09:30:00', '2020-05-01 09:31:00', '2020-05-01 09:32:00', '2020-05-01 09:33:00', '2020-05-01 09:34:00'],
'datetime':['2020-05-01 09:30:00', '2020-05-01 09:31:00', '2020-05-01 09:32:00', '2020-05-01 09:33:00', '2020-05-01 09:34:00',
'2020-05-01 09:30:00', '2020-05-01 09:31:00', '2020-05-01 09:32:00', '2020-05-01 09:33:00', '2020-05-01 09:34:00'],
'low':[10.00, 11.00, 12.00, 11.00, 11.50,
15.00, 14.00, 13.00, 12.00, 12.50],
'high':[10.25, 11.25, 12.25, 11.25, 11.75,
15.25, 14.25, 13.25, 12.25, 12.75],
'close':[10.20, 11.20, 12.20, 11.20, 11.70,
15.20, 14.20, 13.20, 12.20, 12.75]})
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d %H:%M')
df['datetime'] = pd.to_datetime(df['datetime'], format='%Y-%m-%d %H:%M')
df = df.set_index(['ticker', 'date'])
我试图找出如何在我的数据框中创建列,列中包含给定时间点每个股票代码的最低和最高价格。也就是说,在当天的第一次和给定行的当前时间之间
- 例如,在09:32:00,股票代码B的最低价格为13.0(发生在该分钟内),但股票代码a的最低价格为10.0(发生在09:30:00)
- 同样地,在09:32:00,股票代码B的最高价格为11.25(发生在那一分钟),但股票代码a的最高价格为15.25(发生在09:30:00的公开赛)
任何帮助都将不胜感激 我不确定您当然想要什么,但我认为以下代码可以工作:
df[['date','low']].loc[df['ticker']=='A'].min()
输出:
date 2020-05-01 09:30:00
low 10
您无需将索引设置为要与.min()
和.max()
组合使用的股票代码和日期,例如:
df.groupby('ticker')[[['low'、'high'、'close']]扩展().min()
它基本上类似于.rolling()
,但它的长度不断增加,而不是固定大小的窗口。这非常有效!我只需要在groupby语句中添加一个日期列,就可以每天进行设置。
low high close
ticker ticker date
A A 2020-05-01 09:30:00 10.0 10.25 10.2
2020-05-01 09:31:00 10.0 10.25 10.2
2020-05-01 09:32:00 10.0 10.25 10.2
2020-05-01 09:33:00 10.0 10.25 10.2
2020-05-01 09:34:00 10.0 10.25 10.2
B B 2020-05-01 09:30:00 15.0 15.25 15.2
2020-05-01 09:31:00 14.0 14.25 14.2
2020-05-01 09:32:00 13.0 13.25 13.2
2020-05-01 09:33:00 12.0 12.25 12.2
2020-05-01 09:34:00 12.0 12.25 12.2