使用Python Pandas合并日期时间列遇24:00:00问题求助
处理含24:00:00时间的日期时间合并问题
解决方案步骤:
- 标记时间为
24:00:00的行,同时将这类时间替换为00:00:00 - 把日期列转为datetime格式,时间列转为timedelta格式
- 对标记过的行,将对应日期加1天
- 合并日期与时间列,生成目标
Date_Time列
完整代码示例:
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({ 'Value': [0.00, 0.01, 0.02], 'Time': ['11:08:00', '24:00:00', '00:01:00'], 'Date': ['30.07.2020', '30.07.2020', '31.07.2020'] }) # 标记需调整日期的行,并替换时间 df['is_next_day'] = df['Time'] == '24:00:00' df['Time'] = df['Time'].replace('24:00:00', '00:00:00') # 转换日期和时间格式 df['Date'] = pd.to_datetime(df['Date'], format='%d.%m.%Y') df['Time'] = pd.to_timedelta(df['Time']) # 对标记行的日期加1天 df.loc[df['is_next_day'], 'Date'] += pd.Timedelta(days=1) # 合并日期和时间,生成目标列 df['Date_Time'] = df['Date'] + df['Time'] # 整理输出格式,保留需要的列并调整显示样式 df = df[['Value', 'Date_Time']] df['Date_Time'] = df['Date_Time'].dt.strftime('%Y.%m.%d %H:%M:%S') print(df)
输出结果:
Value Date_Time 0 0.00 2020.07.30 11:08:00 1 0.01 2020.07.31 00:00:00 2 0.02 2020.07.31 00:01:00
内容的提问来源于stack exchange,提问作者Grinorye
相关产品推荐
相关产品推荐

