使用pandas将日期时间值舍入为前30秒

2024-09-29 19:29:20 发布

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

给出的时间戳以秒为单位。 例如:

myTime                 myVal
2019-06-03 11:47:37    0.34
2019-06-03 11:47:12    0.32

GivemyTimeDateTime对象 希望将时间调整为2019-06-03 11:47:302019-06-03 11:47:00即之前的30秒精度

可以应用的一个功能是

def timeAdjust(numSec):
    if numSec > 30:
        numSec = 30
    else:
        numSec = 0
    numSec

挑战是调用函数,比如

timeAdjust(df['myTime'].seconds) # Does not work ..

Tags: 对象功能datetimeifdef时间精度单位
1条回答
网友
1楼 · 发布于 2024-09-29 19:29:20

^{}与“30s”一起使用:

pd.to_datetime(df['myTime']).dt.floor('30s')

0   2019-06-03 11:47:30
1   2019-06-03 11:47:00
Name: myTime, dtype: datetime64[ns]

有关您可以在此处使用的日期/时间频率的更多信息,请查看Offset Aliases


如果要将其作为可重用函数编写,请修改代码以接受两个参数:qualifierfreq,分别表示比例和频率

def adjust_time(ser, qualifier, freq=1):
    return ser.dt.floor(f'{freq}{qualifier}')

样品运行

adjust_time(pd.to_datetime(df['myTime']), qualifier='s', freq=30)

0   2019-06-03 11:47:30
1   2019-06-03 11:47:00
Name: myTime, dtype: datetime64[ns]

它对其他频率也很有效

adjust_time(pd.to_datetime(df['myTime']), qualifier='D')

0   2019-06-03
1   2019-06-03
Name: myTime, dtype: datetime64[ns]

相关问题 更多 >

    热门问题