【发布时间】:2021-05-11 17:18:41
【问题描述】:
我是 python 和 pandas 数据框的新手。这是我的数据框的创建代码。
data = pd.read_csv('trafikdensity.csv',parse_dates=True,index_col=0)
我想过滤 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])]
我错过了什么?或者我可以用不同的方法解决我的问题吗?在执行这些操作时,我利用了 Stackoverflow 中的解决方案。但是他们都没有解决方案。
【问题讨论】:
-
请发布您的DataFrame创建代码(以文本形式),以便我们测试我们的解决方案,谢谢。
-
@RavinderSingh13 我发布了它。感谢您的反馈。
-
data = data[data['DATE_TIME'].dt.strftime('%H:%M:%S').between('07:00:00','21:00:00')]您可以尝试重新分配给数据框。 -
@KabilanMohanraj 我试过了,但没有任何变化。
标签: python pandas dataframe datetime filter