【发布时间】:2015-10-03 08:33:27
【问题描述】:
我在一段时间内提取大量数据。它正在从列 recvd_dttm 中提取日期和时间。它需要从一年前开始的所有数据。我想修改它以便它可以拉一个月或一天,但 pd.DateOffset(months=1) 给出了KeyError:1 错误。如果我将它更改为 days=7,我会得到同样的错误。但它适用于years = 1。这是怎么回事?
df = pd.read_csv('MYDATA.csv')
# filter by countries with at least one medal and sort
df['recvd_dttm'] = pd.to_datetime(df['recvd_dttm'])
#Only retrieve data before now (ignore typos that are future dates)
mask = df['recvd_dttm'] <= datetime.datetime.now()
df = df.loc[mask]
# get first and last datetime for final week of data
range_max = df['recvd_dttm'].max()
range_min = range_max - pd.DateOffset(years=1)
# take slice with final week of data
df = df[(df['recvd_dttm'] >= range_min) &
(df['recvd_dttm'] <= range_max)]
编辑:问题出在代码的其他地方!
【问题讨论】:
-
你能澄清你的最终目的是什么吗?是要获得每年的最大值吗?
-
没有。最终目的是从用户输入的特定范围内获得一部分数据。他们选择一天、一个月、一年,然后从 csv 中提取相应数量的数据。
-
range_max 和 range_min 行呢?你希望那些试图完成什么?这些只是所选范围的起点和终点吗?
标签: python date datetime pandas dataframe