Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >熊猫:如何按日期时间列分组,只使用时间和丢弃日期

熊猫:如何按日期时间列分组,只使用时间和丢弃日期
EN

Stack Overflow用户
提问于 2019-10-09 07:36:13
回答 2查看 672关注 0票数 1

我有一个日期时间列的dataframe。我只想按时间组成进行分组,并进行汇总,例如取平均值。

我知道我可以使用pd.Grouper按日期和时间分组,但它不只是准时工作。

假设我们有以下数据:

代码语言:javascript
运行
AI代码解释
复制
import numpy as np
import pandas as pd

drange = pd.date_range('2019-08-01 00:00', '2019-08-12 12:00', freq='1T')
time = drange.time
c0 = np.random.rand(len(drange))
c1 = np.random.rand(len(drange))
df = pd.DataFrame(dict(drange=drange, time=time, c0=c0, c1=c1))
print(df.head())
代码语言:javascript
运行
AI代码解释
复制
               drange      time        c0        c1
0 2019-08-01 00:00:00  00:00:00  0.031946  0.159739
1 2019-08-01 00:01:00  00:01:00  0.809171  0.681942
2 2019-08-01 00:02:00  00:02:00  0.036720  0.133443
3 2019-08-01 00:03:00  00:03:00  0.650522  0.409797
4 2019-08-01 00:04:00  00:04:00  0.239262  0.814565

在本例中,以下内容引发一个TypeError:

代码语言:javascript
运行
AI代码解释
复制
grouper = pd.Grouper(key='time', freq='5T')
grouped = df.groupby(grouper).mean()

我可以将key=drange设置为按日期和时间分组,然后:

  • 重置索引
  • 将新列转换为浮动
  • 带pd.cut的垃圾箱
  • 倒流回到过去
  • 最后分组,然后聚合

..。但我不知道是否有更清洁的方法来取得同样的结果。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-09 07:45:04

Series.dt.time/DatetimeIndex.timedatetime.time的形式返回时间。这并不好,因为熊猫在timedelta64中工作得最好,所以您的'time'列被转换为object,失去了所有的日期时间功能。

您可以减去规范化日期,以获得作为timedelta的时间,这样您就可以继续使用熊猫的datetime工具。您可以通过floor将其分组。

代码语言:javascript
运行
AI代码解释
复制
s = (df.drange - df.drange.dt.normalize()).dt.floor('5T')

df.groupby(s).mean()
代码语言:javascript
运行
AI代码解释
复制
                c0        c1
drange                      
00:00:00  0.436971  0.530201
00:05:00  0.441387  0.518831
00:10:00  0.465008  0.478130
...            ...       ...
23:45:00  0.523233  0.515991
23:50:00  0.468695  0.434240
23:55:00  0.569989  0.510291

或者,如果您对floor不确定,这将获得与索引名称相同的输出。

代码语言:javascript
运行
AI代码解释
复制
df['time'] = (df.drange - df.drange.dt.normalize())  # timedelta64[ns]
df.groupby(pd.Grouper(key='time', freq='5T')).mean()
票数 3
EN

Stack Overflow用户

发布于 2019-10-09 07:47:42

当您使用DataFrame.groupby时,您可以使用系列论证。此外,如果您的系列是datetime,则可以使用series.dt访问date的属性。在您的例子中,df['drange'].dt.hourdf['drange'].dt.time应该这样做。

代码语言:javascript
运行
AI代码解释
复制
# df['drange']=pd.to_datetime(df['drange'])
df.groupby(df['drange'].dt.hour).agg(...)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58307634

复制
相关文章
按持续时间偏移的日期时间
可以添加一个日期 x时间和一个持续时间来计算一个新的日期时间,它与线性时间轴上的距离正好是 的大小。在这里,datetime代表, , , or 中的任何一个,并且非空结果将是相同的类型。可以按如下方式计算日期时间偏移的持续时间:yx + yxyDateDateTimeDateTimeZoneTime
冬夜先生
2022/01/05
2.8K0
MySQL按日期分组并统计截止当前时间的总数实例教程
SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0;
星哥玩云
2022/08/18
4.2K0
MySQL按日期分组并统计截止当前时间的总数实例教程
【技巧】如何快速按照日期分组
在处理数据的时候,我们常常需要按照日期对数据进行分类汇总,例如每周、每月、每年汇总等。常见的做法是建立一个用于分类的变量,然后再按照这个变量进行汇总。然而这种做法特别麻烦,因为我们常常要尝试多种不同的分类长度,很难事先就一次性创建好用于分类的变量。
用户7652506
2020/10/23
2.5K0
【技巧】如何快速按照日期分组
日期和时间构造
这些构造采用 ODBC 日期、时间或时间戳格式的整数或字符串,并将其转换为相应的 IRIS 日期、时间或时间戳格式。他们执行数据输入以及值和范围检查。
用户7741497
2022/08/02
2.1K0
linux 时间和日期
date 查看系统时间(默认) date +“%Y-%m-%d %H:%M:%S” 查看系统时间(指定格式) date -s “时间字符串” 设置系统时间
云缓缓知我意
2021/04/15
4.3K0
[快学Python3]日期和时间处理
概述 在python中, date、time、datetime类提供了一系列处理日期、时间和时间间隔的函数。 在Python里我们大致可以把其实现日期时间类分为5个: date 仅用于日期处理(年、月、日) time 仅用于时间处理(时、分、秒、毫秒) datetime 可以处理日期和时间的组合(年、月、日、时、分、秒、毫秒) timedelta 日期时间处理,可以用于时间运算等 tzinfo 用于时区处理 下面我们一起看几个实例来看看上述几个类的应用,在本文中不会列举所有的应用方法。 基础实例 直接上代码
苦叶子
2018/04/09
2.1K0
python日期和时间
python中常用的处理时间的模块有两个:time 模块、datetime 模块,time模块是比较基础的一个模块,可满足对时间类型数据的基本处理;而 datetime模块可以看做是 对time模块的一个高级封装,功能更加强大,例如在时间的加减上(获取指定时间的前(后)一天的时间,获取指定时间的前(后)一小时的时间),使用datetime模块,实现起来更为方便~
py3study
2020/01/03
2.3K0
python日期和时间
Python 日期和时间
Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间。
Python知识大全
2020/02/13
2K0
在终端里按你的方式显示日期和时间
在 Linux 系统上,date 命令非常简单。你键入 date,日期和时间将以一种有用的方式显示。它包括星期几、日期、时间和时区:
用户8639654
2021/09/22
3.6K0
js时间戳转换日期格式和日期计算
一、时间戳转换日期 1 function formatDate(datetime) { 2 // 获取年月日时分秒值 slice(-2)过滤掉大于10日期前面的0 3 var year = datetime.getFullYear(), 4 month = ("0" + (datetime.getMonth() + 1)).slice(-2), 5 date = ("0" + datetime.getDate()).
半指温柔乐
2018/09/11
29.3K0
MySQL日期和时间函数
WEEK(DATE):返回所给的日期是一年中的第几周 YEAR(DATE):返回所给的日期是哪一年 HOUR(time):返回所给时间的小时 MINUTE(time):返回所给时间的分钟
秋白
2019/02/21
4K0
MySQL日期和时间函数
Excel 日期和时间函数[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/168355.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/20
1.8K0
Excel 日期和时间函数[通俗易懂]
[C#] 日期和时间库 NodaTime
Github:https://github.com/nodatime/nodatime(opens new window)
科控物联
2023/10/06
1.1K0
[C#] 日期和时间库 NodaTime
【mysql】日期和时间函数
GET_FORMAT函数中date_type和format_type参数取值如下:
兮动人
2022/03/15
4.8K0
java如何获取当前日期和时间[通俗易懂]
获取标准时间可以通过System.currentTimeMillis()方法获取,此方法不受时区影响,得到的结果是时间戳格式的。例如:
全栈程序员站长
2022/10/04
2.8K0
java如何获取当前日期和时间
Java 8提供了一个全新的API,用以替换java.util.Date和java.util.Calendar。Date / Time API提供了多个类,帮助我们来完成工作,包括:
Java架构师必看
2021/09/14
3.1K0
Flask 学习-94.Flask-SQLAlchemy 按日期时间查询
datetime 模块用个datetime.now方法可以获取当前时间 ,在当前时间的基础上可以加减几天几小时
上海-悠悠
2023/01/03
1.5K0
datepicker小插件(日期时间 & 日期 & 月份)
一个简单的日期时间选择小插件,引用 jquery.js  & bootstrap.css (需要图标文件) 如果路过的 朋友只是为了 找一个 可以直接引入 项目的时间控件,那么我推荐 Date Range Picker A JavaScript component for choosing date ranges.  Designed to work with the Bootstrap CSS framework. 官方网址 : http://www.daterangepicker.com/ 在这里你可
lonelydawn
2018/02/09
8.3K0
datepicker小插件(日期时间 & 日期 & 月份)
Java 日期时间
java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。
taoli
2022/09/30
2.8K0
Java 日期时间
点击加载更多

相似问题

熊猫按日期和时间分组

20

按熊猫分组的日期时间

116

如何使用时间戳按日期分组?(AngularJS)

28

熊猫按日期、时间和列分组,然后应用生成ValueError

10

熊猫日期时间指数按世纪分组

16
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文