【问题标题】:How to resample datetime data to get only the specifc hours of the day?如何重新采样日期时间数据以仅获取一天中的特定时间?
【发布时间】:2020-08-08 06:11:44
【问题描述】:

所以我有一些 2020 年每一分钟的股票数据。虽然我的问题是我只想要从早上 9:30 到下午 4:00 的数据。目前,数据还包括我想过滤掉的盘后价格。数据的代码是:

import pandas as pd

#get stock prices
d = pd.read_csv(r"C:\Users\B1880\Downloads\AMD_stock_data\AMD_2020_2020.txt")
d.columns = ['Dates', 'Open', 'High', 'Low', 'Close', 'Volume']
d.index.name = 'Dates'

数据的 URL 是:https://docs.google.com/spreadsheets/d/1uxVjEJkEmDZwu44pNxsg5ZBonqbTFak8HoESbxo0AM0/edit#gid=1360727590 谢谢!

【问题讨论】:

  • 欢迎来到 SO!请花点时间阅读有关如何发布熊猫问题的信息:stackoverflow.com/questions/20109391/…
  • 我假设您的意思是我提供的数据不符合您测试的标准。虽然我的问题是如何为日期时间数据重新创建示例数据框?感谢您的回复。

标签: python pandas dataframe datetime filtering


【解决方案1】:

您可以将"Dates" 列转换为日期时间,然后按时间过滤。

>>> import datetime
>>> amd_df["Dates"] = amd_df["Dates"].apply(pd.to_datetime)
>>> amd_df = amd_df[amd_df["Dates"].dt.time >= datetime.time(hour=9, minute=30)]
>>> amd_df = amd_df[amd_df["Dates"].dt.time <= datetime.time(hour=16, minute=0)]

【讨论】:

  • 谢谢,这就是解决方案。
【解决方案2】:

您可以使用between_time进行过滤:

df2 = df.set_index('Dates')
df2 = df2.between_time('9:30', '16:00')

【讨论】:

  • 感谢您的回答,虽然现在我收到错误:TypeError: Index must be DatetimeIndex
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-15
  • 2016-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多