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

如何为Pandas的DateTime列添加递增秒数

问题描述

现有如下格式的DataFrame:

Date_time         Col1
0 2023-03-04 10:30:00  10
1 2023-03-04 10:30:00  11
2 2023-03-04 10:30:00  21
3 2023-03-04 10:30:00  54
4 2023-03-04 10:30:00  12 
5 2023-03-04 10:30:00  13
6 2023-03-04 10:30:00  21
...
58 2023-03-04 10:30:00  22
59 2023-03-04 10:30:00  21
60 2023-03-04 10:31:00  25
61 2023-03-04 10:31:00  21
...

由于数据采集问题,Date_time列的秒数均为0,现在需要让该列的秒数按1秒递增,当秒数到59后,随分钟变化重置为0,最终得到如下结果:

Date_time         Col1
0 2023-03-04 10:30:00  10
1 2023-03-04 10:30:01  11
2 2023-03-04 10:30:02  21
3 2023-03-04 10:30:03  54
4 2023-03-04 10:30:04  12 
5 2023-03-04 10:30:05  13
6 2023-03-04 10:30:06  21
....
58 2023-03-04 10:30:58  22
59 2023-03-04 10:30:59  21
60 2023-03-04 10:31:00  25
61 2023-03-04 10:31:01  21
...
解决方案

可以通过以下步骤实现:

  1. 确保Date_time列是datetime类型,若未转换则先执行转换:
import pandas as pd

df['Date_time'] = pd.to_datetime(df['Date_time'])
  1. 按分钟分组,给每组内的行添加从0开始递增的秒数偏移:
# 按日期和分钟分组,生成每组内的行索引(从0开始)
df['second_offset'] = df.groupby(df['Date_time'].dt.floor('min')).cumcount()

# 将偏移量转为秒级时长,与原时间相加
df['Date_time'] = df['Date_time'] + pd.to_timedelta(df['second_offset'], unit='s')

# 可选:删除临时生成的偏移量列
df = df.drop('second_offset', axis=1)

核心逻辑说明:

  • dt.floor('min')将每个时间戳向下取整到分钟,以此作为分组依据,保证同一分钟内的行归为一组
  • cumcount()为每组内的行生成连续整数(从0开始),刚好对应需要添加的秒数
  • 将整数转为秒级Timedelta后与原时间相加,即可实现秒数递增;当分钟切换时,新分组的偏移量重新从0开始,自然完成秒数重置

执行后即可得到符合需求的Date_time列。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 00:52:52