繁体   English   中英

从txt中加载数据,用python从文件中加载header

[英]Load data from txt and load the header from the file with python

我正在加载一个如下所示的文本文件 (extract_all.txt):

'Reswp' : 2.99824206 : 'Disp.' : 0.26170 : 'B'     : 0.10000 
'Reswp' : 2.38923463 : 'Disp.' : 0.19869 : 'B'     : 0.10000 
'Reswp' : 2.371472   : 'Disp.' : 0.20387 : 'B'     : 0.10000 

我想加载数据,将文本作为旁边数据列的标题。 我怎样才能做到这一点?

到目前为止,我已将数据作为单独的列加​​载。

import pandas as pd
data = pd.read_csv('extract_all.txt', sep=":")

您可以使用此示例加载数据,但我建议更正原始文件的生成并使用一些标准格式(CSV、Json 等):

import pandas as pd
from ast import literal_eval


all_lines = []
with open("extract_all.txt", "r") as f1:
    for line in map(str.strip, f1):
        # skip blank lines:
        if not line:
            continue
        line = literal_eval('[' + line.replace(':', ',') + ']')
        all_lines.append( dict(zip(line[::2], line[1::2])) )

df = pd.DataFrame(all_lines)
print(df)

印刷:

      Reswp    Disp.    B
0  2.998242  0.26170  0.1
1  2.389235  0.19869  0.1
2  2.371472  0.20387  0.1

假设文件看起来像(没有标题,没有空行)

'Reswp' : 2.99824206 : 'Disp.' : 0.26170 : 'B' : 0.10000
'Reswp' : 2.38923463 : 'Disp.' : 0.19869 : 'B' : 0.10000
'Reswp' : 2.371472 : 'Disp.' : 0.20387 : 'B' : 0.10000

这应该有效

data = pd.read_csv('extract_all.txt', sep=":", header=None)
data = pd.DataFrame({data.iloc[0, i].strip().strip("'"): data[i+1] for i in (0, 2, 4)})

输出( print(data) ):

      Reswp    Disp.    B
0  2.998242  0.26170  0.1
1  2.389235  0.19869  0.1
2  2.371472  0.20387  0.1

(空行实际上无关紧要,无论如何它都会起作用。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM