【发布时间】:2018-08-16 18:56:50
【问题描述】:
我有一个包含下表的文件:
Name AvailableDate totalRemaining
0 X3321 2018-03-14 13:00:00 200
1 X3321 2018-03-14 14:00:00 200
2 X3321 2018-03-14 15:00:00 200
3 X3321 2018-03-14 16:00:00 200
4 X3321 2018-03-14 17:00:00 193
我想返回一个包含特定时间期间所有记录的DataFrame,而不管实际的日期如何。
我按照这里的例子:
filter pandas dataframe by time
但是当我执行以下操作时:
## setup
import pandas as pd
import numpy as np
### Step 2
### Check available slots
file2 = r'C:\Users\user\Desktop\Files\data.xlsx'
slots = pd.read_excel(file2,na_values='')
## filter the preferred ones
slots['nextAvailableDate'] = pd.to_datetime((slots['nextAvailableDate']))
slots['times'] = pd.to_datetime((slots['nextAvailableDate']))
slots = slots[slots['times'].between('21:00:00', '02:00:00')]
这将返回空 DataFrame 以及此解决方案:
slots = slots[slots['times'].dt.strftime('%H:%M:%S').between('21:00:00', '02:00:00')]
有没有办法在不单独创建时间列的情况下正确地做到这一点?请问我应该如何解决这个问题?
我的目标:
Name AvailableDate totalRemaining
0 X3321 2018-03-14 21:00:00 200
1 X3321 2018-03-14 22:00:00 200
2 X3321 2018-03-14 23:00:00 200
3 X3321 2018-03-14 00:00:00 200
4 X3321 2018-03-14 01:00:00 193
数据集中出现的每一天。
【问题讨论】:
标签: python python-3.x pandas datetime python-datetime