过滤Pandas DataFrame的Timestamp列无结果且无报错,求解决方案
问题解决:Pandas按Timestamp过滤无结果的原因及方案
问题根源
你代码里的df['Timestamp']是通过pd.to_datetime(df['date']).dt.time生成的,这一列的元素是**datetime.time对象**,而非字符串。当你用字符串"09:15:00"和它做相等比较时,类型不匹配,自然找不到任何匹配的行。
解决方法
方法1:用datetime.time对象作为过滤条件
引入datetime模块,构造对应时间的time对象来匹配:
from datetime import time # 构造09:15:00的time对象 filt = df['Timestamp'] == time(9, 15, 0) initial_balance = df.loc[filt]
方法2:把Timestamp列转为字符串后再过滤
先将datetime.time类型的列转为字符串类型,再用字符串匹配:
# 转换Timestamp列类型为字符串 df['Timestamp'] = df['Timestamp'].astype(str) # 执行过滤 filt = df['Timestamp'] == "09:15:00" initial_balance = df.loc[filt]
方法3:直接生成字符串类型的Timestamp列
修改Timestamp列的生成逻辑,直接提取时间字符串,省去后续类型转换:
# 替换原来的Timestamp生成代码 df['Timestamp'] = pd.to_datetime(df['date']).dt.strftime("%H:%M:%S") # 直接用字符串过滤 filt = df['Timestamp'] == "09:15:00" initial_balance = df.loc[filt]
验证小技巧
可以先打印列的元素类型,确认问题:
# 查看Timestamp列第一个元素的类型 print(type(df['Timestamp'].iloc[0]))
内容的提问来源于stack exchange,提问作者smg_08
相关产品推荐
相关产品推荐

