我需要用Python读取一个.dat文件。该文件总共有3列和数百行。第二列和第三列包含两个字符,后面是我想提取的浮点数-第二列总是以"SA"
开头,第三列总是以"SC"
开头。我目前正在加载数据并循环遍历每行以提取值,但有没有更好的方法呢
一旦数据被清理,我想对结果执行一些计算,即计算平均值。
下面是.dat文件中两行代码的示例:
9:01:15 SA7.998 SC7.968
9:01:16 SA7.998 SC7.968
字符串
这是我目前使用的代码。
import numpy as np
import os.path
from statistics import mean
time=[]
s_1=[]
s_2=[]
s1=[]
s2=[]
r1=[]
r2=[]
avgg=[]
# Reading data from file
with open('serial_2.dat','r') as f:
dat=f.readlines()
for i in dat:
y=i.split() # cleaning and getting columns without spaces
time.append(y[0])
s1.append(y[1])
s2.append(y[2])
#getting only numbers without strings (SA and SC)
for counter in (range(0,len(s1))):
S_1=s1[counter]
r1.append(S_1[2:])
r1_f=np.array(r1, dtype='float32')
S_2=s2[counter]
r2.append(S_2[2:])
r2_f=np.array(r2, dtype='float32')
avgg=r1_f+r2_f/2
print(np.mean(avgg))
型
1条答案
按热度按时间disbfnqx1#
你可以使用
pandas
来实现:字符串
输出量:
型
如果s1和s2列中总是有2个字符,可以避免正则表达式,并去掉前两个字符:
型
然后计算平均值:
型