给出的时间戳以秒为单位。 例如:
myTime myVal
2019-06-03 11:47:37 0.34
2019-06-03 11:47:12 0.32
赋予myTime
是DateTime
对象
想要将时间调整为2019-06-03 11:47:30
,2019-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 ..
答案 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。
如果要将其编写为可重用函数,请修改代码以接受两个参数:qualifier
和freq
分别表示比例和频率。
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]