[英]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.