You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按每10秒间隔为Pandas DataFrame添加递增标签

问题描述

我有一个包含ID和time列的Pandas DataFrame,数据如下:

IDtime
12022-07-31 23:59:53
22022-07-31 23:59:54
32022-07-31 23:59:55
42022-07-31 00:00:00
52022-07-31 00:00:01
62022-07-31 00:00:02
72022-07-31 00:00:07
82022-07-31 00:00:10
92022-07-31 00:00:13

需要基于time列按每10秒的间隔为数据添加递增的字母标签,期望输出如下:

IDtimeDESIRED_VALUE
12022-07-31 23:59:53A
22022-07-31 23:59:54A
32022-07-31 23:59:55A
42022-08-01 00:00:00B
52022-08-01 00:00:01B
62022-08-01 00:00:02B
72022-08-01 00:00:07B
82022-08-01 00:00:10C
92022-08-01 00:00:13C

解决方案

按以下步骤操作即可实现需求:

  1. 统一时间格式:先把time列转换成Pandas的datetime类型,确保能正常计算时间间隔。
  2. 生成分组编号:以数据中最早的时间为基准,计算每个时间与基准时间的秒数差,除以10后取整数,得到每行的分组编号。
  3. 映射为字母标签:将分组编号对应成大写字母,比如编号0对应A、1对应B,以此类推。

代码实现:

import pandas as pd

# 构造示例数据
data = {
    'ID': [1,2,3,4,5,6,7,8,9],
    'time': ['2022-07-31 23:59:53', '2022-07-31 23:59:54', '2022-07-31 23:59:55',
             '2022-07-31 00:00:00', '2022-07-31 00:00:01', '2022-07-31 00:00:02',
             '2022-07-31 00:00:07', '2022-07-31 00:00:10', '2022-07-31 00:00:13']
}
df = pd.DataFrame(data)

# 转换time列为datetime类型
df['time'] = pd.to_datetime(df['time'])

# 计算每个时间与最早时间的秒数差,除以10取整得到分组ID
base_time = df['time'].min()
df['group_id'] = (df['time'] - base_time).dt.total_seconds() // 10

# 将分组ID映射为字母标签
df['DESIRED_VALUE'] = df['group_id'].apply(lambda x: chr(ord('A') + int(x)))

# 可选:删除中间的group_id列
df = df.drop('group_id', axis=1)

print(df)

运行代码后即可得到与期望一致的输出,其中时间列的跨天情况会被Pandas自动识别并正确计算间隔。

内容的提问来源于stack exchange,提问作者user17760969

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 07:31:17