如何将Pandas的10分钟时间戳转换为时间范围并拼接列
解决方法:为10分钟粒度时间戳生成时间范围列
嘿,这个需求用Pandas处理起来超简单!我给你一步步拆解操作,还附了完整示例代码,你直接套用就行:
步骤1:确保时间列是Timestamp类型
首先得确认你的时间列已经是Pandas的Timestamp类型,如果不是的话,先转一下:
import pandas as pd # 假设你的时间列叫original_time df['original_time'] = pd.to_datetime(df['original_time'])
步骤2:计算时间范围的起始值
用pd.Timedelta给每个时间戳减去10分钟,生成起始时间列:
df['start_time'] = df['original_time'] - pd.Timedelta(minutes=10)
步骤3:拼接成时间范围格式的列
接下来把起始时间和原时间戳拼接成你需要的格式,这里有两种常用方式:
方式1:直接用字符串拼接(默认ISO格式)
df['time_range'] = df['start_time'].astype(str) + ' - ' + df['original_time'].astype(str)
方式2:自定义时间显示格式
如果想要更简洁的格式(比如只显示年月日时分),用dt.strftime来定制:
# 比如格式化为YYYY-MM-DD HH:MM df['time_range'] = df['start_time'].dt.strftime('%Y-%m-%d %H:%M') + ' → ' + df['original_time'].dt.strftime('%Y-%m-%d %H:%M')
完整示例代码
我给你写了个可直接运行的示例,方便你理解整个流程:
import pandas as pd # 生成测试数据:10分钟粒度的时间序列 timestamps = pd.date_range(start='2024-01-01 00:00', end='2024-01-01 01:00', freq='10T') df = pd.DataFrame({'original_time': timestamps}) # 步骤1:确保时间列是Timestamp(这里生成的已经是,所以可省略) # df['original_time'] = pd.to_datetime(df['original_time']) # 步骤2:计算起始时间 df['start_time'] = df['original_time'] - pd.Timedelta(minutes=10) # 步骤3:拼接时间范围 df['time_range'] = df['start_time'].dt.strftime('%Y-%m-%d %H:%M') + ' - ' + df['original_time'].dt.strftime('%Y-%m-%d %H:%M') # 查看结果 print(df)
运行后你会得到这样的输出:
original_time start_time time_range 0 2024-01-01 00:00:00 2023-12-31 23:50:00 2023-12-31 23:50 - 2024-01-01 00:00 1 2024-01-01 00:10:00 2024-01-01 00:00:00 2024-01-01 00:00 - 2024-01-01 00:10 2 2024-01-01 00:20:00 2024-01-01 00:10:00 2024-01-01 00:10 - 2024-01-01 00:20 3 2024-01-01 00:30:00 2024-01-01 00:20:00 2024-01-01 00:20 - 2024-01-01 00:30 4 2024-01-01 00:40:00 2024-01-01 00:30:00 2024-01-01 00:30 - 2024-01-01 00:40 5 2024-01-01 00:50:00 2024-01-01 00:40:00 2024-01-01 00:40 - 2024-01-01 00:50 6 2024-01-01 01:00:00 2024-01-01 00:50:00 2024-01-01 00:50 - 2024-01-01 01:00
小提示
- 如果你的时间粒度不是固定10分钟,只需要把
pd.Timedelta(minutes=10)里的数值改成对应的分钟数就行 - 拼接时的分隔符(比如
-或者→)可以根据你的需求随意调整
内容的提问来源于stack exchange,提问作者Calculus
相关产品推荐
相关产品推荐

