pandas - pandas 以 5 分钟为基础创建组 ID
问题描述
我有一个如下数据框:
s = pd.DataFrame({
'X':np.arange(2, 10),
'time':pd.to_datetime([
'20130101 7:34:04', '20130101 8:34:08', '20130101 10:34:08',
'20130101 12:34:15', '20130101 13:34:28', '20130101 12:34:54',
'20130101 14:34:55', '20130101 17:29:12'])
})
我想time
每小时或任何想要的时间间隔为列创建一个组 ID。让我们以每小时为例,下面是我想要的(从午夜 00:00:00 开始):
X time time-group
0 2 2013-01-01 07:34:04 7
1 3 2013-01-01 08:34:08 8
2 4 2013-01-01 10:34:08 10
3 5 2013-01-01 12:34:15 12
4 6 2013-01-01 13:34:28 13
5 7 2013-01-01 12:34:54 12
6 8 2013-01-01 14:34:55 14
7 9 2013-01-01 17:29:12 17
如何以有效的方式做到这一点?
PS我知道在这种特殊情况下,我可以只使用s.time.dt.hour
as time-group
,但我想要一个适用于任何时间间隔的通用解决方案。
解决方案
在 Chris 的大力帮助下,我们想出了一个解决这个问题的方法,基本与在此处输入链接描述相同,但稍作修改以从一个想要的基础开始,这里的技巧是添加基础(起点) 作为一个的第一行data.frame
这里是代码;</p>
s = pd.DataFrame({
'X':np.arange(1,10),
'time':pd.to_datetime([
'20130101 00:00:00',
'20130101 7:34:04', '20130101 8:34:08', '20130101 10:34:08',
'20130101 12:34:15', '20130101 13:34:28', '20130101 12:34:54',
'20130101 14:34:55', '20130101 17:29:12']),
'time-group':[1,7,8,10,12,13,12,14,17]
})
# '20130101 00:00:00' is the base I want, you can change it to whatever you want.
s.sort_values(['time'], ascending=[True],inplace=True)
new = s.groupby(pd.Grouper(key='time', freq='15T'), as_index=False).apply(lambda x: x['time'])
s['time-group'] = new.index.get_level_values(0)
这会给你:
X time time-group
0 1 2013-01-01 00:00:00 0
1 2 2013-01-01 07:34:04 30
2 3 2013-01-01 08:34:08 34
3 4 2013-01-01 10:34:08 42
4 5 2013-01-01 12:34:15 50
5 6 2013-01-01 13:34:28 50
6 7 2013-01-01 12:34:54 54
7 8 2013-01-01 14:34:55 58
8 9 2013-01-01 17:29:12 69
推荐阅读
- python - 为什么使用 python stripe lib 检索时,条带费用不显示为“已退款”?
- java - 如何在 Android 模拟器中手动选择纬度和经度,而不是选择地图上的点,
- sql - 如何在 SQL Server 的 BINARY 或 VARBINARY 变量中设置特定位?
- r - 如何提取向量变量的第一行
- javascript - WordPress 无法识别自定义 JS?
- javascript - 当使用 PHP 插入更多条目时,如何控制 Chart.js 中 Y 轴值的覆盖?
- python - 包含黑色代码格式化程序行长忽略注释
- javascript - 将 div 放在第三个 td 下并根据第三个 td 高度更改它的 Y 位置
- c++ - 自动解包一对迭代器
- postgresql - 将变量从一个 sql 脚本传递到另一个作为 postgres sql 中的参数