【发布时间】:2018-06-15 06:45:55
【问题描述】:
我正在尝试用 StartTime 和 EndTime 以及其他内容来划分包含日志数据的巨大日志数据集。 我正在使用 np.where 比较熊猫数据框对象,然后将其划分为 每小时(可能是半小时或每季度) 块,取决于 hr 和 timeWindow 价值。
下面,在这里,我试图将全天日志分成 1 小时的块,但它没有给我预期的输出。
我完全不知道我的错在哪里!
# Holding very first time in the log data and stripping off
# second, minutes and microseconds.
today = datetime.strptime(log_start_time, "%Y-%m-%d %H:%M:%S.%f").replace(second = 0, minute = 0, microsecond = 0)
today_ts = int(time.mktime(today.timetuple())*1e9)
hr = 1
timeWindow = int(hr*60*60*1e9) #hour*minute*second*restdigits
parts = [df.loc[np.where((df["StartTime"] >= (today_ts + (i)*timeWindow)) & \
(df["StartTime"] < (today_ts + (i+1)*timeWindow)))].dropna(axis= 0, \
how='any') for i in range(0, rngCounter)]
如果我检查零件数据中的第一个日志条目,则如下所示:
- 00:00:00。
- 00:43:23。
- 01:12:59.
- 01:53:55。
- 02:23:52。
- ....
我希望输出如下所示:
- 00:00:00
- 01:00:01
- 02:00:00
- 03:00:00
- 04:00:01
- ....
虽然我已经使用另一种方式实现了它,但这是一种变通方法,并且由于没有这样的方式,我失去了一些功能。
有人可以弄清楚这种方法到底有什么问题吗?
注意:我正在使用 python notebook 和 pandas,numpy。
【问题讨论】:
-
能否提供一些示例数据?
-
我不确定你是否需要
np.where在这里的.loc。您以什么方式没有得到预期的输出? -
另外,直觉上我认为这会更好地通过像
pandas.Grouper这样的时间段来实现,而不是像这样的列表理解。但是我们没有什么可以测试的。请看How to make good reproducible pandas examples
标签: python pandas numpy jupyter-notebook