python-3.x - Python csv:将具有毫秒值的日期时间列分组,间隔为 15 分钟,并添加一个具有时间桶名称的新 csv 列
问题描述
我有 csv 列,其日期时间值低于毫秒值。
20-07-10 16:00:08.155
20-07-10 16:10:30.745
20-07-10 16:34:09.246
20-07-10 16:46:00.961
20-07-10 16:56:04.129
20-07-10 17:06:09.536
20-07-10 18:06:26.568
20-07-10 18:26:36.569
20-07-10 18:36:50.560
20-07-10 18:47:06.114
20-07-10 18:57:25.397
我需要按每小时 15 分钟对时间进行分组,并添加一个开始时间为 15 分钟间隔的新列。输出应该在 csv 中有一个额外的列,时间桶如下所示。
20-07-10 16:00:08.155 20-07-10 16:00
20-07-10 16:10:30.745 20-07-10 16:00
20-07-10 16:34:09.246 20-07-10 16:30
20-07-10 16:46:00.961 20-07-10 16:45
20-07-10 16:56:04.129 20-07-10 16:45
20-07-10 17:06:09.536 20-07-10 17:00
20-07-10 18:06:26.568 20-07-10 18:00
20-07-10 18:26:36.569 20-07-10 18:15
20-07-10 18:36:50.560 20-07-10 18:30
20-07-10 18:47:06.114 20-07-10 18:45
20-07-10 18:57:25.397 20-07-10 18:45
我现在的代码如下所示
import pandas as pd
from datetime import datetime
in_path = "input.csv"
df = pd.read_csv(in_path)
time_utc = df['DATE_TIME_2'] # in csv file, "DATE_TIME_2" column has the datetime value.
print(time_utc)
time_utc['time_bucket'] = time_utc.apply(lambda x: "perdio_%d"%(int(x['DATE_TIME_2'].minute/15)))
print(time_utc)
但上面的代码给了我以下错误:
TypeError:字符串索引必须是整数
如果我使用以下任何一种而不是 lambda,
time_utc.groupby(pd.Grouper(freq='15Min')).first()
time_utc.resample('15min').first()
我收到以下错误:
TypeError:仅对 DatetimeIndex、TimedeltaIndex 或 PeriodIndex 有效,但获得了“RangeIndex”实例
解决方案
使用Series.dt.floor
:
time_utc['time_bucket'] = time_utc['DATE_TIME_2'].dt.floor('15Min')
print (time_utc)
DATE_TIME_2 time_bucket
0 2010-07-20 16:00:08.155 2010-07-20 16:00:00
1 2010-07-20 16:10:30.745 2010-07-20 16:00:00
2 2010-07-20 16:34:09.246 2010-07-20 16:30:00
3 2010-07-20 16:46:00.961 2010-07-20 16:45:00
4 2010-07-20 16:56:04.129 2010-07-20 16:45:00
5 2010-07-20 17:06:09.536 2010-07-20 17:00:00
6 2010-07-20 18:06:26.568 2010-07-20 18:00:00
7 2010-07-20 18:26:36.569 2010-07-20 18:15:00
8 2010-07-20 18:36:50.560 2010-07-20 18:30:00
9 2010-07-20 18:47:06.114 2010-07-20 18:45:00
10 2010-07-20 18:57:25.397 2010-07-20 18:45:00
推荐阅读
- google-sheets - Google 表格循环 VLOOKUP 并连接结果
- java - 由于文件锁定,H2 数据库未刷新
- hive - 多表连接查询 - ID 和数据表
- scala - 如何从包含spark scala数据框中列名的列表中获取列值
- apache-nifi - NiFi:在流文件中的所有记录前附加(或附加)行号
- django - 长时间运行的请求导致与 daphne 和 nginx 的连接被拒绝
- postgresql - 如何将游标循环变量评估为表名?
- python - Django mixins.py 和 super() 函数
- c++ - 关于 cin 和输入缓冲区的简短问题
- javascript - 错误:无效的挂钩调用。Hooks 只能在 React Native 中的函数组件内部调用