Python数学列

2024-04-18 21:40:33 发布

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

我正在尝试自动将大型.txt文件转换为.csv,以便在专用软件中导入。我有几十个.txt文件,其中包含非常大的字符串,其中包含逗号分隔的传感器数据:

Date,Time,[Mainline] Name,MAG4 Altitude Value,IL MAG1 Easting,IL MAG1 Northing,Magnetic Field MAG1 [uT] Value,Magnetic Field MAG1 [uT] Quality,MAG1 Depth Value,IL MAG2 Easting,IL MAG2 Northing,Magnetic Field MAG2 [uT] Value,Magnetic Field MAG2 [uT] Quality,MAG2 Depth Value,IL MAG3 Easting,IL MAG3 Northing,Magnetic Field MAG3 [uT] Value,Magnetic Field MAG3 [uT] Quality,MAG3 Depth Value,IL MAG4 Easting,IL MAG4 Northing,Magnetic Field MAG4 [uT] Value,Magnetic Field MAG4 [uT] Quality,MAG4 Depth Value,IL MRU Pitch,IL MRU Roll
25-9-2013,27:48.6,INF_01,464,579618.04,5807421.24,49008.96,2212,18.68,579616.64,5807420.71,49003.14,1284,18.73,579615.23,5807420.18,49005.78,1428,18.97,579613.83,5807419.65,48999.99,1382,18.99,4.68,-0.14
25-9-2013,27:49.1,INF_01,461,579618.35,5807420.4,49008.99,2197,18.68,579616.95,5807419.88,49003.01,1270,18.73,579615.54,5807419.35,49005.73,1416,18.97,579614.14,5807418.83,49000.01,1379,18.83,3.66,0.23
25-9-2013,27:49.3,INF_01,461,579618.49,5807420.07,49008.9,2192,18.68,579617.08,5807419.55,49003.13,1255,18.73,579615.68,5807419.02,49005.6,1416,18.97,579614.27,5807418.5,48999.73,1377,18.99,3.14,0.31

我需要的是把它转换成一个带有头的.csv文件,并将每个传感器的信息分开。 对于第一个传感器(mag1),我需要列0、1、2、5到8,然后是3,最后是24和25。对于第二个传感器,列0、1、2、9到13,然后是3、24和25。其他传感器也是这样。在

我有一些代码可以成功地将文件转换成我需要的四个独立的产品。但是,我想用公式value=value*0.0101817-1.0283转换第3列中的数据。在

代码:

^{pr2}$

这个数学公式在我的程序中不起作用。如何将其添加到我的代码中?为什么它在这里不起作用?我假设这是因为它是错误的类型,但我不知道如何在不遇到一系列关于列表类型的错误的情况下改变它

我已经浏览了python文档,但我已经把它塞满了。我发现的示例只显示处理文本字符串,而不显示数值和字符串。 如果有人能为我提供一个很好的指南,教我如何处理这样的科学数据,我将不胜感激。在

提前感谢您的回答


Tags: 文件fieldvalue传感器ilqualitydepthut
1条回答
网友
1楼 · 发布于 2024-04-18 21:40:33

多亏了格林纳的建议,我解决了这个问题:

with open(filename,"r") as source:
rdr= csv.reader( source )
with open(file_out_mag1,"w") as result:
    wtr= csv.writer( result,lineterminator='\n' )
    for r in rdr:

        if r[3] != 'MAG4 Altitude Value':
            r[3] = float(r[3])*0.0101817 - 1.0283
        wtr.writerow( (r[0],r[1],r[2],r[4],r[5],r[6],r[7],r[8],r[3], r[24], r[25]) )

我对编程还是个新手,有没有改进编码的方法?在

相关问题 更多 >