根据python中所需的时间过滤数据帧中的数据

2024-05-19 23:26:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我不熟悉python和数据框架。这是我的数据帧的创建代码

data = pd.read_csv('trafikdensity.csv',parse_dates=True,index_col=0)

下面是我的数据帧的前5行。 Result of the first method

我要筛选1月份所有日期的“07:00:00”和“21:00:00”之间的数据。此数据帧包括一月的所有日期。首先,我转换为datetime对象,并尝试进行筛选

data['DATE_TIME'] = pd.to_datetime((data['DATE_TIME']))
data[data['DATE_TIME'].dt.strftime('%H:%M:%S').between('07:00:00','21:00:00')]

它给了我一个空数据。然后,我尝试了另一种方法。它也给了我一个空数据

start_date01 = '2020-01-01 07:00:00'
end_date01 = '2020-01-01 21:00:00'
start_date02 = '2020-01-02 07:00:00'
end_date02 = '2020-01-02 21:00:00'
start_date03 = '2020-01-03 07:00:00'
end_date03 = '2020-01-03 21:00:00'

#greater than the start date and smaller than the end date
m1 = (data['DATE_TIME'] > start_date01) & (data['DATE_TIME'] <= end_date01) 
m2 = (data['DATE_TIME'] > start_date02) & (data['DATE_TIME'] <= end_date02) 
m3 = (data['DATE_TIME'] > start_date03) & (data['DATE_TIME'] <= end_date03)

data = data[np.logical_and.reduce([m1, m2, m3])]

Result of the second method

我错过了什么?或者我可以用不同的方法解决我的问题吗?在执行这些操作时,我利用了Stackoverflow中的解决方案。但他们都没有找到解决办法