我有一个交易表,其形式(为简单起见):
Ticker Timestamp price
0 AAPL 9:30:00 139
1 FB 11:33:14 110
等等。现在,我想提取每个股票代码当天的最后交易,这当然是可能的(假设原始表名为trades
)。
trades['Timestamp']=pd.to_datetime(trades['Timestamp'])
aux = trades.groupby(['Ticker'])['Timestamp'].max()
auxdf = aux.to_frame()
auxdf = auxdf.reset_index()
closing = pd.merge(left=trades,right=auxdf, left_on=['Ticker','Timestamp'],right_on=['Ticker', 'Timestamp'])
现在,这有效,但我不确定它是最优雅还是最有效的方法。有什么建议吗?
答案 0 :(得分:0)
尝试使用ix和idxmax:
trades['Timestamp']=pd.to_datetime(trades['Timestamp']
trades.ix[trades.groupby('Ticker').Timestamp.idxmax()]