Python 使用Pandas query()筛选时间戳列上的数据帧
我正在尝试使用字符串和时间戳列上的函数Python 使用Pandas query()筛选时间戳列上的数据帧,python,pandas,dataframe,timestamp,Python,Pandas,Dataframe,Timestamp,我正在尝试使用字符串和时间戳列上的函数query()筛选数据帧: df.query('Timestamp < "2020-02-01"') 有人知道如何将query()与日期时间列一起使用吗?列名将内置类型时间戳隐藏起来。第一步,可以使用以下命令将列重命名为其他名称: 然后,以下内容将为datetime提供技巧: df.query('MyTimestamp < 20200201') df.query('MyTimestamp
query()
筛选数据帧:
df.query('Timestamp < "2020-02-01"')
有人知道如何将
query()
与日期时间列一起使用吗?列名将内置类型时间戳
隐藏起来。第一步,可以使用以下命令将列重命名为其他名称:
然后,以下内容将为datetime提供技巧:
df.query('MyTimestamp < 20200201')
df.query('MyTimestamp<20200201')
或者,如果要使用时间戳查询数据帧:
df.query('MyTimestamp < @ts("20200201T071320")'
df.query('MyTimestamp<@ts(“20200201T071320”)'
我认为错误消息提供了线索-时间戳是一种类型,无法与str或datetime进行比较。运行测试并将时间戳名称更改为其他名称,然后查看代码是否有效。df['Timestamp']是熊猫允许的,这就是它工作的原因,因为它不被视为类型,而是列。阅读警告框了解更多信息:谢谢,这就是问题所在。重命名列后它工作。
df.loc[df['Timestamp'] < "2020-02-01"]
Out[4]:
Timestamp Error ... ToD Day_Night
0 2020-01-17 00:00:00 0 ... 0 Night
1 2020-01-17 00:10:00 0 ... 0 Night
2 2020-01-17 00:20:00 0 ... 0 Night
3 2020-01-17 00:30:00 0 ... 0 Night
4 2020-01-17 00:40:00 0 ... 0 Night
2154 2020-01-31 23:10:00 0 ... 23 Night
2155 2020-01-31 23:20:00 0 ... 23 Night
2156 2020-01-31 23:30:00 0 ... 23 Night
2157 2020-01-31 23:40:00 0 ... 23 Night
2158 2020-01-31 23:50:00 0 ... 23 Night
[2159 rows x 37 columns]
df.rename(columns={"Timestamp": "MyTimestamp"})
df.query('MyTimestamp < 20200201')
df.query('MyTimestamp < @ts("20200201T071320")'