Python Pandas合并排序时间序列并生成连续唯一时间序列的实现方案
解决方案
没问题,我来帮你实现这个时间序列处理需求。下面是完整的代码,每一步都附带注释说明:
import pandas as pd import numpy as np # 输入的两个时间序列 dates1 = pd.to_datetime(['2015-10-08 13:41:00', '2015-10-08 13:44:00', '2015-10-08 13:48:00', '2015-10-08 13:49:00']) dates2 = pd.to_datetime(['2015-10-08 13:42:00','2015-10-08 13:44:00', '2015-10-08 13:45:00', '2015-10-08 13:50:00']) # 1. 合并两个序列、去重并排序 combined_unique_dates = pd.concat([pd.Series(dates1), pd.Series(dates2)]).drop_duplicates().sort_values() # 2. 确定连续序列的起止范围:从最早时间到最晚时间+1分钟 start_time = combined_unique_dates.min() end_time = combined_unique_dates.max() + pd.Timedelta(minutes=1) # 3. 生成连续分钟间隔的时间序列 continuous_time_series = pd.date_range(start=start_time, end=end_time, freq='T') # 4. 转换为与预期输出一致的字符串列表格式 result = continuous_time_series.strftime('%Y-%m-%d %H:%M:%S').tolist() # 输出结果 print(result)
代码步骤解释:
- 合并去重排序:用
pd.concat将两个datetime序列合并为一个Series,drop_duplicates()移除重复时间,sort_values()确保序列按时间顺序排列。 - 确定时间范围:取合并后序列的最小时间作为起始点,最大时间加上1分钟作为终点,这样就能包含要求的「最晚时间后一分钟」。
- 生成连续序列:
pd.date_range是Pandas生成规则时间序列的工具,freq='T'指定按分钟间隔生成,自动填补原序列中缺失的时间点。 - 格式转换:用
strftime将datetime对象转为指定格式的字符串,再转成列表,完全匹配预期输出的格式。
运行这段代码后,你会得到完全符合预期的时间序列列表。
内容的提问来源于stack exchange,提问作者georgehere
相关产品推荐
相关产品推荐

