【问题标题】:Python dataframe filtering based on date comparison基于日期比较的Python数据框过滤
【发布时间】:2020-04-18 21:15:07
【问题描述】:

我正在尝试使用日期过滤我的数据框。从 csv 导入的日期是字符串。因此,我创建了一个带有“时间戳”格式的日期的新列。然后我想与特定日期进行比较,但是我收到以下错误

  • TypeError: '>' 在 'list' 的实例和 '时间戳'

这是我的代码

import pandas as pd
data = [['agent_1','2019-06-27 15:35:49'],['agent_2','2029-06-27 15:35:49'],['agent_3','2019-04-27 15:35:49'],['agent_4','2029-06-27 15:35:49'],['agent_5','2019-02-27 15:35:49']]
MasterData = pd.DataFrame(data,columns=['Agents','timeCreated'])
MasterData['timeCreatedUpdated'] = pd.to_datetime(MasterData['timeCreated'],format='%Y-%m-%d %H:%M:%S')
MasterData.dtypes
datetime_object2 = pd.Timestamp(2019,8,1,12)
MasterData(['timeCreatedUpdated']>datetime_object2)

【问题讨论】:

  • 错误已经够清楚了;方括号在 Python 中定义 listdocs.python.org/3.8/tutorial/datastructures.html。您正在将列表与时间戳进行比较。这没有任何意义。
  • 我认为在 R 中这是有效的,也许这就是混乱的原因

标签: python pandas dataframe timestamp


【解决方案1】:

试试:

print(MasterData[MasterData['timeCreatedUpdated'] >pd.Timestamp(2019,8,1,12)]) 

【讨论】:

    【解决方案2】:

    最后一行需要修改:

    MasterData[MasterData['timeCreatedUpdated']>datetime_object2]
    

    【讨论】:

      【解决方案3】:

      Mondy - 你做的一切都是正确的,只是最后一行的小修正

      使用

      MasterData[MasterData["timeCreatedUpdated"] > datetime_object2] 
      

      而不是

      MasterData(['timeCreatedUpdated']>datetime_object2)
      

      它为您进行主要比较并返回一个布尔值(真/假),现在我们再次将答案包装在 DF 中以获取值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-25
        • 1970-01-01
        • 1970-01-01
        • 2021-12-17
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        • 2018-09-29
        相关资源
        最近更新 更多