我有两个数据帧。一个有股票交易(诸如买入日期,买入价格,卖出日期,卖出价格之类的东西)。另一个数据框的所有价格均按日期顺序排列,其层次结构索引为['symbol', 'date']
索引'close'
价格dfPrice
。
我不知道向这个群组提交数据框的更好方法,我已经记录了前10行:
ra = dfPrice.to_records()
产生ra
:
rec.array([('A', Timestamp('2000-09-01 00:00:00'), 39.84),
('A', Timestamp('2000-09-05 00:00:00'), 39.8),
('A', Timestamp('2000-09-06 00:00:00'), 38.63),
('A', Timestamp('2000-09-07 00:00:00'), 39.84),
('A', Timestamp('2000-09-08 00:00:00'), 38.15),
('A', Timestamp('2000-09-11 00:00:00'), 36.54),
('A', Timestamp('2000-09-12 00:00:00'), 35.41),
('A', Timestamp('2000-09-13 00:00:00'), 35.41),
('A', Timestamp('2000-09-14 00:00:00'), 35.89),
('A', Timestamp('2000-09-15 00:00:00'), 36.7)],
dtype=[('symbol', 'S1'), ('date', 'O'), ('close', '<f8')])
您可以通过以下方式获取dfPrice
:
dfPrice = DataFrame(ra)
dfPrice.set_index(['symbol', 'date'], inplace=True)
我想要的是使用买入日期和卖出日期,并在我持有股票的区间内查找最低价格。
如果我买了股票&#39; A&#39;在2000-09-07并在2000-09-14卖出(保持在周末没有任何价格条目)我以为我可以通过使用类似的东西获得该间隔的最低价格:
minPrice = dfPrice.min['A', '2000-09-07':'2000-09-14']
答案是35.41。
我看过Stack Overflow,但是空了。我可以用什么来得到我想要的东西?
答案 0 :(得分:0)
可能有一种更直接的方法,但我设法让advanced indexing使用元组作为层次索引:
>>> dfPrice[('A','2000-09-07'):('A','2000-09-14')]
close
symbol date
'A' 2000-09-07 39.84
2000-09-08 38.15
2000-09-11 36.54
2000-09-12 35.41
2000-09-13 35.41
2000-09-14 35.89
>>> dfPrice[('A','2000-09-07'):('A','2000-09-14')].min()
close 35.41
dtype: float64
因此,对于一个必须使用高级索引才能切入第二级索引,并且必须将.min()
方法应用于切片数据帧(而不是尝试将索引放入调用中) .min()
)。