我正在运行一个运行字段解算器的软件,并将结果转储到日志文件中。每次文本文件的内容不必相同。例如:
首次运行后,相应的日志文件可能包含:
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()
的日志文件中的条目数相同,我就能够实现此目的。如果必须像上面的示例那样动态添加列,我该如何实现?
感谢任何帮助
答案 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