首页 > 解决方案 > 将 txt 文件转换为 pandas 数据框

问题描述

我有一个文本文件,想把它变成一个熊猫数据框。不幸的是,文本文件的结构让我很难做到这一点。

文本文件如下所示:

======> EVENT:130
a = 1.4
b = 2.5
c = 1.7
======> EVENT:698
a = 1.2
b = 4.3
c = 2.4
======> EVENT:1055
a = 3.4
b = 4.5
c = 2.3

“EVENT:”后面的数字是随机的。我想将此文本文件转换为具有以下结构的熊猫数据框

  a    b    c 
1.4  2.5  1.7
1.2  4.3  2.4
3.4  4.5  2.3

所以我想要数据框的一行中的每个事件。如何删除“======> EVENT:xxxx”行?或者我如何使用这条线告诉 pd.read_csv() 在 df 中开始一个新行?有没有办法让 pd.read_csv() 意识到“=”的左侧是列名,而右侧是该列的条目?

标签: pandasdataframetext

解决方案


您可以使用re模块制作自定义解析器。例如:

import re
import pandas as pd

with open("your_file.txt", "r") as f_in:
    data = f_in.read()

all_data = []
for event in re.split(r".*EVENT.*", data):
    if not event.strip():
        continue
    d = {}
    for k, v in re.findall(r"\s*(.*)\s*=\s*(.*)\s*", event):
        d[k] = v
    all_data.append(d)

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

印刷:

    a    b    c 
0  1.4  2.5  1.7
1  1.2  4.3  2.4
2  3.4  4.5  2.3

推荐阅读