选择 Python 上周的数据

Selecting Data from Last Week in Python

我有一个大型数据库,我希望只阅读上周的 python 代码。

我的第一个问题是接收日期和时间的列不是 pandas 中日期时间的格式。我的输入(第 15 列)如下所示:

recvd_dttm
1/1/2015 5:18:32 AM
1/1/2015 6:48:23 AM
1/1/2015 13:49:12 PM

根据 pandas 库中的时间序列/日期功能,我正在考虑将我的代码基于下面示例中显示的 "Week()" 函数:

In [87]: d
Out[87]: datetime.datetime(2008, 8, 18, 9, 0)

In [88]: d - Week()
Out[88]: Timestamp('2008-08-11 09:00:00')

我试过这样排序日期:

df =pd.read_csv('MYDATA.csv')
orderdate = datetime.datetime.strptime(df['recvd_dttm'], '%m/%d/%Y').strftime('%Y %m %d')

但是我收到了这个错误

TypeError: must be string, not Series

有谁知道执行此操作的更简单方法或如何修复此错误?

编辑:日期不一定按顺序排列。并且有时数据库中会出现错误,例如日期 9/03/2015(将来)有人打错了。我需要能够忽略那些。

您可以通过列表理解来遍历要转换的日期

orderdate = [datetime.datetime.strptime(ttm, '%m/%d/%Y').strftime('%Y %m %d') for ttm in list(df['recvd_dttm'])]
import datetime as dt

# convert strings to datetimes
df['recvd_dttm'] = pd.to_datetime(df['recvd_dttm'])

# get first and last datetime for final week of data
range_max = df['recvd_dttm'].max()
range_min = range_max - dt.timedelta(days=7)

# take slice with final week of data
sliced_df = df[(df['recvd_dttm'] >= range_min) & 
               (df['recvd_dttm'] <= range_max)]