如何统一Request.timestamp与Drop.timestamp格式并拆分日期时间?
统一日期时间格式并提取日期/时间部分的解决方案
嘿,这个问题我之前处理过类似的,用Python的pandas库来解决超方便!先看看你的数据里的两种日期时间格式:
- 短格式:
MM/DD/YYYY HH:MM(比如11/7/2016 11:51) - 长格式:
DD-MM-YYYY HH:MM:SS(比如13-07-2016 08:33:16)
下面是具体的操作步骤,一步步来就能搞定:
步骤1:导入库并加载数据
假设你的数据存在CSV文件里,先把它加载成pandas的DataFrame:
import pandas as pd # 加载CSV数据,其他格式比如Excel用pd.read_excel就行 df = pd.read_csv('your_trip_data.csv')
步骤2:把日期时间列转成统一的datetime类型
pandas的pd.to_datetime()函数自带多格式识别能力,直接对目标列操作就好:
# 转换请求时间列 df['Request.timestamp'] = pd.to_datetime(df['Request.timestamp'], dayfirst=False) # 转换下车时间列 df['Drop.timestamp'] = pd.to_datetime(df['Drop.timestamp'], dayfirst=False)
这里的
dayfirst=False是告诉函数,像11/7/2016这种格式里,第一个数字是月份(也就是MM/DD/YYYY);如果你的短格式是DD/MM/YYYY,记得改成dayfirst=True。要是自动识别偶尔出错,还可以手动指定格式列表兜底:# 明确指定两种格式,确保转换准确 df['Request.timestamp'] = pd.to_datetime(df['Request.timestamp'], format=['%m/%d/%Y %H:%M', '%d-%m-%Y %H:%M:%S'])
步骤3:拆分日期和时间部分
转成datetime类型后,提取日期和时间就简单了:
# 拆分请求时间的日期和时间 df['Request.date'] = df['Request.timestamp'].dt.date df['Request.time'] = df['Request.timestamp'].dt.time # 拆分下车时间的日期和时间 df['Drop.date'] = df['Drop.timestamp'].dt.date df['Drop.time'] = df['Drop.timestamp'].dt.time
如果需要字符串格式的日期时间(比如存到数据库或者导出成特定格式),可以用strftime()指定格式:
# 转成YYYY-MM-DD格式的日期字符串 df['Request.date_str'] = df['Request.timestamp'].dt.strftime('%Y-%m-%d') # 转成HH:MM:SS格式的时间字符串 df['Request.time_str'] = df['Request.timestamp'].dt.strftime('%H:%M:%S')
验证一下结果
打印前几行看看效果:
print(df[['Request.timestamp', 'Request.date', 'Request.time']].head())
你会看到所有日期时间都变成了统一的格式,日期和时间也成功拆分出来啦!
内容的提问来源于stack exchange,提问作者user8731910
相关产品推荐
相关产品推荐

