在历元中按时间帧过滤数据帧

2024-09-29 21:37:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧,它有一个时间戳列,从epoch格式开始以秒为单位。它具有数据类型float

它希望按特定的时间窗口过滤数据帧

方法:

zombieData[(zombieData['record-ts'] > period_one_start) & (zombieData['record-ts'] < period_one_end)]

这将返回一个空的数据帧。我可以确认,我的时间范围内有更大、更小的时间戳。 我使用以下方法计算时间戳:

period_one_start = datetime.strptime('2020-12-06 03:30:00', '%Y-%m-%d %H:%M:%S').timestamp()

我很高兴能得到任何帮助。我猜我的过滤逻辑是错误的,这让我很困惑,因为一个条件过滤(例如,启动时间之后的所有内容)正在工作

谢谢你的帮助


Tags: 数据方法格式时间单位floatrecordone
2条回答
import pandas as pd
from datetime import datetime
import numpy as np
date = np.array('2020-12-01', dtype=np.datetime64)
dates = date + np.arange(12)

period_one_start = datetime.strptime('2020-12-06 03:30:00', '%Y-%m-%d %H:%M:%S').timestamp()
period_one_end   = datetime.strptime('2020-12-09 03:30:00', '%Y-%m-%d %H:%M:%S').timestamp()
zombieData = pd.DataFrame( data= {"record-ts": dates} )
zombieData[ ((zombieData['record-ts'] > '2020-12-06') & (zombieData['record-ts'] < '2020-12-09')) ]

(如果要保留格式)

这看起来很乱,但我强烈推荐。在大多数情况下(尤其是对于较大的数据帧),转换为pd.Timestamp before对于确保良好的比较和对小于和大于的numpy方法的调用将计算得更快一些

zombieData[zombieData['record-ts'].gt(pd.Timestamp('2020-12-06')) & zombieData['record-ts'].lt(pd.Timestamp('2020-12-09')) ]

相关问题 更多 >

    热门问题