我试图根据传感器的类型将传感器数据的时间戳舍入到最近的5分钟。我有一个名为“传感器类型”的专栏,有两个选项:“空气”或“声音”。对于空气传感器类型,时间戳应四舍五入至最接近的5分钟。传感器类型声音的时间戳应保持不变
根据这条规则,所有时间戳都四舍五入到5分钟,这是有效的
df['timestamp'] = df['timestamp'].dt.round('5min')
使用下面的遮罩,选择所有空气传感器类型
mask = df['sensor type'] == 'air'
事实上,我应该结合这两个规则来得到我想要的。然而,我无法管理它是如何工作的。 下面的规则给出了一个错误“TypeError:不支持使用DataFrame索引系列,请使用适当的DataFrame列”
mask = df.loc[df['sensor type'] == 'air']
df[‘timestamp’][mask] = df[‘timestamp'][mask].dt.round('5min')
dtypes:
timestamp datetime64[ns]
sensor type object
我希望有人能帮我把这两条线结合起来
除了前面的答案,您还可以尝试以下内容-
如果您想为每个} 将它们分组在一起
sensor type
做一些可能稍有不同的事情,您可以使用^{根据您的示例数据,以下将时间戳全部舍入到最接近的5秒时间戳(对于您的示例,秒显示的结果优于分钟):
将时间戳转换为实际的时间戳类型(默认为字符串):
Groupby
传感器类型并对每个子数据帧执行舍入方法,将结果放入原始数据帧的新列中:如果您想对每个子数据帧执行非常具体的操作,可以实现一个小函数,而不是使用匿名lambda函数
请注意从
timestamp
到rounded_timestamp
列的舍入值:我假设您现在也可能拥有或创建其他列,因此我通常也会将dataframe的索引作为用例最重要的时间戳,因为这样您就可以访问^{} 的一些强大属性和方法:
相关问题 更多 >
编程相关推荐