如何将指定格式时间及DataFrame中datetime列转为当日分钟数?
问题1:将'YYYY-mm-dd HH:MM:SS.[]'格式时间转换为当日分钟数
如果是字符串格式的时间,先把它转为datetime对象,再计算与当日0点的时间差,最后将总秒数除以60得到含小数的分钟数:
from datetime import datetime # 示例时间字符串 time_str = "2024-05-20 14:30:45.678" # 解析字符串为datetime对象(.%f匹配毫秒/微秒部分) dt = datetime.strptime(time_str, "%Y-%m-%d %H:%M:%S.%f") # 获取当日0点时间 midnight = dt.replace(hour=0, minute=0, second=0, microsecond=0) # 计算时间差并转为分钟数 minutes_since_midnight = (dt - midnight).total_seconds() / 60
问题2:在Pandas DataFrame中生成当日分钟数字段
已知df的date列是datetime64[ns]类型,有两种简洁实现方式:
方法一:利用时间差计算
import pandas as pd # 计算每条记录的当日0点 df['midnight'] = df['date'].dt.floor('D') # 计算时间差并转为分钟数,生成浮点型列 df['minutes'] = (df['date'] - df['midnight']).dt.total_seconds() / 60 # 不需要midnight列的话可以删除 df.drop('midnight', axis=1, inplace=True)
方法二:拆分时分秒计算
直接提取小时、分钟、秒、微秒,按分钟单位换算后相加:
df['minutes'] = (df['date'].dt.hour * 60 + df['date'].dt.minute + df['date'].dt.second / 60 + df['date'].dt.microsecond / (60 * 10**6))
内容的提问来源于stack exchange,提问作者NigelBlainey
相关产品推荐
相关产品推荐

