pandas将时间列,分组聚合成间隔两个小时或者随意时间的间隔,统计个数

        Pandas中的resample,重新采样,是对原样本重新处理的一个方法,是一个对常规时间序列数据重新采样和频率转换的便捷的方法。重新取样时间序列数据。

        方便的时间序列的频率转换和重采样方法。对象必须具有类似datetime的索引(DatetimeIndex、PeriodIndex或TimedeltaIndex),或将类似datetime的值传递给on或level关键字。

 

有关resample()的用法可参考:

Pandas中resample方法详解_风雪云侠的博客-CSDN博客_pandas resample

# coding=utf-8
import time
from pprint import pprint
import pandas as pd
import time

data_list = [
    {'name': "测试1", '__time__': '1663744601'},
    {'name': "测试2", '__time__': '1663746401'},
    {'name': "测试3", '__time__': '1663746881'},
    {'name': "测试4", '__time__': '1663754081'},
    {'name': "测试5", '__time__': '1663754321'},
    {'name': "测试6", '__time__': '1663755821'},
    {'name': "测试7", '__time__': '1663757621'},
    {'name': "测试8", '__time__': '1663761341'},
    {'name': "测试9", '__time__': '1663763561'},
    {'name': "测试10", '__time__': '1663772081'},
    {'name': "测试11", '__time__': '1663773161'},
    {'name': "测试12", '__time__': '1663775981'},
]
df = pd.DataFrame(data_list)
# pandas将时间戳字符串转换为格式化时间类型
df['__time__'] = pd.to_datetime(df['__time__'].apply(lambda x: time.strftime('%Y-%m-%d %H:%M', time.localtime(int(x)))))
# 按照__time__的降序对dataframe进行排序
df = df.sort_values(by='__time__')
# 给df加一列,值都为1
df['temp_num'] = 1
# 时间重新采样,并进行统计,重新设置索引,并只取,'__time__', 'temp_num',这两列
# 注意,rule='2H'是间隔两小时
df = df.resample(rule='2H', on='__time__').sum().reset_index()[['__time__', 'temp_num']]
df['__time__'] = df['__time__'].apply(lambda x: str(x))     # 将时间格式 转化成时间格式字符串
dic_data = df.to_dict(orient='records')
pprint(dic_data)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还是那个同伟伟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值