Pandas Beckhoff TwinCat作用域CSV格式转换为熊猫数据帧

Pandas Beckhoff TwinCat作用域CSV格式转换为熊猫数据帧,pandas,csv,twincat,Pandas,Csv,Twincat,在Beckhoff TwinCAT示波器中记录数据后,可以将该数据导出到CSV文件。然而,所述CSV文件具有相当复杂的格式。有谁能建议最有效的方法将这样一个文件导入pandas数据框,以便我执行分析 以下是格式示例: 要读取文件的大部分内容(忽略标题材料),请使用skiprows关键字参数来read\u csv: Name,fasd,,,, File,C;\,,,, Start,dfsd,,,, ,,,,, ,,,,, Name,Peak,Name,PULS1,Name,SINUS_FAST N

在Beckhoff TwinCAT示波器中记录数据后,可以将该数据导出到CSV文件。然而,所述CSV文件具有相当复杂的格式。有谁能建议最有效的方法将这样一个文件导入pandas数据框,以便我执行分析

以下是格式示例:

要读取文件的大部分内容(忽略标题材料),请使用
skiprows
关键字参数来
read\u csv

Name,fasd,,,,
File,C;\,,,,
Start,dfsd,,,,
,,,,,
,,,,,
Name,Peak,Name,PULS1,Name,SINUS_FAST
Net id,123.123.123,Net id,123.123.124,Net Id,123.123.125
Port,801,Port,801,Port,801
,,,,,
0,0.6113936598,0,0.07994111349,0,0.08425652468
0,0.524852539,0,0.2051963401,0,0.4391185847
0,0.4993723482,0,0.2917317117,0,0.4583736263
0,0.5976553194,0,0.8675482865,0,0.8435987898
0,0.06087224998,0,0.7933980583,0,0.5614294705
0,0.1967968423,0,0.3923966599,0,0.1951608414
0,0.9723649064,0,0.5187276782,0,0.7646786192
将熊猫作为pd导入
df=pd.read\u csv('data.csv',skiprows=18)

对于标题材料,我认为您必须编写自定义解析器。

无需编写自定义解析器。使用示例数据
scope\u data.csv

Name,fasd,,,,
File,C;\,,,,
Start,dfsd,,,,
,,,,,
,,,,,
Name,Peak,Name,PULS1,Name,SINUS_FAST
Net id,123.123.123,Net id,123.123.124,Net Id,123.123.125
Port,801,Port,801,Port,801
,,,,,
0,0.6113936598,0,0.07994111349,0,0.08425652468
0,0.524852539,0,0.2051963401,0,0.4391185847
0,0.4993723482,0,0.2917317117,0,0.4583736263
0,0.5976553194,0,0.8675482865,0,0.8435987898
0,0.06087224998,0,0.7933980583,0,0.5614294705
0,0.1967968423,0,0.3923966599,0,0.1951608414
0,0.9723649064,0,0.5187276782,0,0.7646786192
您可以按如下方式导入:

import pandas as pd

scope_data = pd.read_csv(
    "scope_data.csv",
    skiprows=[*range(5), *range(6, 9)],
    usecols=[*range(1, 6, 2)]
)
然后你得到

>>> scope_data.head()
       Peak     PULS1  SINUS_FAST
0  0.611394  0.079941    0.084257
1  0.524853  0.205196    0.439119
2  0.499372  0.291732    0.458374
3  0.597655  0.867548    0.843599
4  0.060872  0.793398    0.561429
我没有原始的csv范围,但是稍微调整一下
skiprows
use\cols
应该会得到想要的结果