【问题标题】:Filtering the data in the dataframe according to the desired time in python根据python中所需的时间过滤数据框中的数据
【发布时间】:2021-05-11 17:18:41
【问题描述】:

我是 python 和 pandas 数据框的新手。这是我的数据框的创建代码。

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

您在下面看到的是我的数据框的前 5 行。

我想过滤 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


【解决方案1】:
data['DATE_TIME'] = pd.to_datetime(data['DATE_TIME'], yearfirst=True)

yearfirst 参数必须设置为 true。

【讨论】:

    猜你喜欢
    • 2021-06-22
    • 1970-01-01
    • 2022-11-23
    • 2022-01-22
    • 2012-12-21
    • 2023-02-13
    • 1970-01-01
    • 1970-01-01
    • 2018-03-27
    相关资源
    最近更新 更多