将文本文件转换为 pandas 数据帧的最佳方法是什么?
What would be the best way to convert a text file to a pandas dataframe?
我有一个基本上可以使用的文本文件。
Number|Name|Report
58|John|John is great
John is good
I like John
[Report Ends]
并为不同的人一遍又一遍地重复。
我想把它变成如下所示的数据框
Number Name Report
58 John John is great John is good I like John [Report Ends]
使用线路
pd.read_csv('/Path', sep="|",header=0)
我得到了正确的列名。第一行直到“报告”部分都是正确的。我认为“报告”部分搞砸了一切,因为它占据了文本文件中的几行。我应该如何将报告数据放入数据框中?
通过几行手动解析,您可以提取信息并在将其读入数据帧之前对其进行调整。
import pandas as pd
with open('info.txt', 'r') as fp:
info = fp.readlines()
df_dicts = []
cd = None
for line in info[1:]:
line = line.replace('\n', ' ').strip()
if '|' in line:
cd = {}
df_dicts.append(cd)
cd['Number'], cd['Name'], cd['Report'] = line.split('|')
else:
cd['Report'] += " " + line
print(pd.DataFrame(df_dicts))
如果您对替换函数过于笼统有疑问,则必须开始研究正则表达式。
我有一个基本上可以使用的文本文件。
Number|Name|Report
58|John|John is great
John is good
I like John
[Report Ends]
并为不同的人一遍又一遍地重复。
我想把它变成如下所示的数据框
Number Name Report
58 John John is great John is good I like John [Report Ends]
使用线路
pd.read_csv('/Path', sep="|",header=0)
我得到了正确的列名。第一行直到“报告”部分都是正确的。我认为“报告”部分搞砸了一切,因为它占据了文本文件中的几行。我应该如何将报告数据放入数据框中?
通过几行手动解析,您可以提取信息并在将其读入数据帧之前对其进行调整。
import pandas as pd
with open('info.txt', 'r') as fp:
info = fp.readlines()
df_dicts = []
cd = None
for line in info[1:]:
line = line.replace('\n', ' ').strip()
if '|' in line:
cd = {}
df_dicts.append(cd)
cd['Number'], cd['Name'], cd['Report'] = line.split('|')
else:
cd['Report'] += " " + line
print(pd.DataFrame(df_dicts))
如果您对替换函数过于笼统有疑问,则必须开始研究正则表达式。