对包含datetimes的dataframe列应用函数

2024-06-06 07:38:46 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我试过的一段代码。我试图通过将roundtime()函数应用于数据帧“Booking Time”列中的每个条目,将时间四舍五入到最近的小时。但是,舍入不适用于该列,条目保持原样

import datetime as dt
def roundtime(t):
    if t.minute >= 30:
        return t.replace(second=0, minute=0, hour=(t.hour+1)%24)
    else:
        return t.replace(second=0, minute=0)
df2= df.copy()
df2['Booking Time']= pd.to_datetime(df2['booking_created']).dt.time
df2['Booking Time'].apply(roundtime)
df2.head()

有人能指出故障吗


Tags: 数据函数代码datetimereturntimedt条目
2条回答

如果需要将函数应用于日期时间:

df2['Booking Time']= pd.to_datetime(df2['booking_created']).apply(roundtime)

或者,如果需要适用于以下时间:

df2['Booking Time']= pd.to_datetime(df2['booking_created']).dt.time.apply(roundtime)

这可以不用单独的函数来完成

import numpy as np
df['Booking Time'] = (np.where(pd.to_datetime(df['booking_created'],format='%Y-%m-%d%H:%M:%S').dt.minute > 30 
                , pd.to_datetime(df['booking_created'],format='%Y-%m-%d%H:%M:%S').dt.ceil('30min')
                , pd.to_datetime(df['booking_created'],format='%Y-%m-%d%H:%M:%S')))

相关问题 更多 >