从具有不同信息的多个文本文件中读取值

时间:2018-05-15 09:15:58

标签: python excel

我正在运行一个运行字段解算器的软件,并将结果转储到日志文件中。每次文本文件的内容不必相同。例如:

首次运行后,相应的日志文件可能包含:

Loss per inch @ 2.500000e+00 GHz = -0.474 dB Loss per inch @ 5 GHz = -0.838 dB

第二次运行后,下一个相应的日志文件可能包含:

Loss per inch @ 2.500000e+00 GHz = -0.474 dB
Loss per inch @ 5 GHz = -0.838 dB
Loss per inch @ 7.500000e+00 GHz =-0.955 dB

我的目标是将其转储到excel文件中,其中列名称作为文本文件中值的LHS,其行作为每个日志文件的RHS。 如果使用pandas.DataFrame()的日志文件中的条目数相同,我就能够实现此目的。如果必须像上面的示例那样动态添加列,我该如何实现?

感谢任何帮助

2 个答案:

答案 0 :(得分:1)

如上所述,我建议将所有行作为数据帧的行读取,分为两列,分别为frequency和loss:

df = pd.read_table(_filepath_, sep=' [@GHz=dB ]+', header=None, usecols=[1,2], names=['frequency', 'Loss per inch'], engine='python')

In: df
Out: 
   frequency  Loss per inch
0        2.5         -0.474
1        5.0         -0.838
2        7.5         -0.955

答案 1 :(得分:0)

您可以使用pandas索引将值动态添加到Excel工作表中。 假设您已在excel文件中记录了第一个迭代值。 您再次读取excel文件并使用DataFrame.loc索引来添加数据dynamicicallu。

import pandas as pd
old1='Loss per inch @ 2.500000e+00 GHz = -0.474 dB'
old2='Loss per inch @ 5 GHz = -0.838 dB'
df=pd.DataFrame(columns=[old1.split('@')[0]])
df.loc[len(df)]=old1.split('@')[1]
df.loc[len(df)]=old2.split('@')[1]
df.to_excel('E:/log1.xlsx')
new='Loss per inch @ 7.500000e+00 GHz =-0.955 dB'
splitted=new.split('@')
df=pd.read_excel('E:/log1.xlsx')
print df.head
print df.columns
df.loc[len(df)]=splitted[1]
print df.head