如何使用多个传感器转换time.series数据的csv文件?

2024-04-26 10:52:55 发布

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

我想用多个传感器转换uct时间序列(iso8601)数据的CSV文件。这就是原始数据当前的样子:

current data

不同的传感器通过名称(客户列)进行描述,并具有不同的轴值

我希望数据是这样的:

desired output

PS:传感器之间测量的时间可能不同,并且需要进行同步阶段(每200 ms测量一次的时间分类)

有解决这个问题的想法/提示吗? 我对编程相当陌生,尤其是Python,所以我已经没有什么想法了。 提前谢谢


1条回答
网友
1楼 · 发布于 2024-04-26 10:52:55

下面是一个示例,您可以使用一个假输入来适应您的用例:

完整代码

import pandas as pd

df = pd.read_csv("input.csv")
df["time"] = pd.to_datetime(df["time"])

dsensor1 = df[df["Client"]=="sensor1"]
dsensor2 = df[df["Client"]=="sensor2"]

dout = pd.merge_asof(dsensor1,dsensor2, on="time", tolerance=pd.Timedelta(value=200,unit="milli"), direction="nearest")

代码解释

收到的时间可能不同,您不能使用通常的pandas功能 合并数据帧。您必须根据时间使用asof merge 列(必须对时间值进行排序)。熊猫的作用是 ^{}

让我们输入一个假输入.CSV文件

^{tb1}$

表1:Fake input.csv

在这里,我假设“,”是input.csv文件中的字段分隔符。 然后我们需要告诉熊猫,“时间”列是一种时间类型。在里面 为了做到这一点,我使用了to_datetime函数

df = pd.read_csv("input.csv")
df["time"] = pd.to_datetime(df["time"])
^{tb2}$

然后,我们从传感器S1和传感器S2提取两个独立的数据帧

dsensor1 = df[df["Client"]=="sensor1"]
dsensor2 = df[df["Client"]=="sensor2"]

对于传感器1,dsensor1为:

^{tb3}$

然后我们只需要在两个数据帧之间使用 公差为200ms。方向参数表示熊猫将加入 时间值公差 射程

dout = pd.merge_asof(dsensor1,dsensor2, on="time", tolerance=pd.Timedelta(value=200,unit="milli"), direction="nearest")
^{tb4}$

相关问题 更多 >