使用熊猫将日期时间值四舍五入到前30秒

时间:2019-06-23 17:00:07

标签: python pandas datetime

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

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

赋予myTimeDateTime对象 想要将时间调整为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 ..

1 个答案:

答案 0 :(得分:2)

dt.floor与“ 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]