首页 > 解决方案 > 通过过滤时间戳列来制作数据帧的子集

问题描述

我有一个数据框,它有一个 datetime64[ns] 时间戳列,以及其他一些列。我正在尝试过滤数据框,以便我只使用其中所有时间的特定时间。(例如,我只从下面的 10:10 开始)我尝试查看 at_time 或 between_time 方法,但我猜它们只适用于特定的日期范围?还尝试了 df['timestamp'].dt.time == "10:10:00" ,但失败了

timestamp              Col1 Col2  Col3 
2021-01-01 10:00:00 
2021-01-01 10:10:00 
2021-01-01 10:20:00 

你能建议吗

标签: pythonpandas

解决方案


尝试:

因为你的列'timestamp'是dtypedatetime所以你必须提供datetime.time()比较因为df['timestamp'].dt.time给你时间是datetime.timedtype

import datetime

m=df['timestamp'].dt.time == datetime.time(10,10)
#OR
m=df['timestamp'].dt.time == pd.Timestamp("10:10:00").time()
#OR
m=df['timestamp'].dt.time == pd.to_datetime("10:10:00").time()

最后:

result=df[m]

的输出m

0    False
1     True
2    False
Name: timestamp, dtype: bool

推荐阅读