2024-04-26 10:52:55 发布
网友
我想用多个传感器转换uct时间序列(iso8601)数据的CSV文件。这就是原始数据当前的样子:
不同的传感器通过名称(客户列)进行描述,并具有不同的轴值
我希望数据是这样的:
PS:传感器之间测量的时间可能不同,并且需要进行同步阶段(每200 ms测量一次的时间分类)
有解决这个问题的想法/提示吗? 我对编程相当陌生,尤其是Python,所以我已经没有什么想法了。 提前谢谢
下面是一个示例,您可以使用一个假输入来适应您的用例:
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文件
表1:Fake input.csv
在这里,我假设“,”是input.csv文件中的字段分隔符。 然后我们需要告诉熊猫,“时间”列是一种时间类型。在里面 为了做到这一点,我使用了to_datetime函数
to_datetime
df = pd.read_csv("input.csv") df["time"] = pd.to_datetime(df["time"])
然后,我们从传感器S1和传感器S2提取两个独立的数据帧
dsensor1 = df[df["Client"]=="sensor1"] dsensor2 = df[df["Client"]=="sensor2"]
对于传感器1,dsensor1为:
然后我们只需要在两个数据帧之间使用 公差为200ms。方向参数表示熊猫将加入 时间值在公差 射程
dout = pd.merge_asof(dsensor1,dsensor2, on="time", tolerance=pd.Timedelta(value=200,unit="milli"), direction="nearest")
下面是一个示例,您可以使用一个假输入来适应您的用例:
完整代码
代码解释
收到的时间可能不同,您不能使用通常的pandas功能 合并数据帧。您必须根据时间使用asof merge 列(必须对时间值进行排序)。熊猫的作用是 ^{}
让我们输入一个假输入.CSV文件
表1:Fake input.csv
在这里,我假设“,”是input.csv文件中的字段分隔符。 然后我们需要告诉熊猫,“时间”列是一种时间类型。在里面 为了做到这一点,我使用了
to_datetime
函数然后,我们从传感器S1和传感器S2提取两个独立的数据帧
对于传感器1,dsensor1为:
然后我们只需要在两个数据帧之间使用 公差为200ms。方向参数表示熊猫将加入 时间值在公差 射程
相关问题 更多 >
编程相关推荐