【发布时间】:2021-07-05 21:14:08
【问题描述】:
我正在尝试使用 Pandas 将一堆文本文件转换为数据框。
每个文本文件都包含以两个相关信息开头的简单文本:Number 和 Register 变量。
那么,文本文件有一些我们不应该考虑的随机文本。
最后,文本文件包含诸如股份编号、人名、出生日期、地址和一些以小写字母开头的附加行等信息。每个组都包含此类信息,并且模式始终相同:组的第一行由一个数字(此处为id)定义,然后是“SHARE”字样。
这是一个例子:
Number 01600 London Register 4314
Some random text...
1 SHARE: 73/1284
John Smith
BORN: 1960-01-01 ADR: Streetname 3/2 1000
f 4222/2001
h 1334/2000
i 5774/2000
4 SHARE: 58/1284
Boris Morgan
BORN: 1965-01-01 ADR: Streetname 4 2000
c 4222/1988
f 4222/2000
我需要将文本转换为具有以下输出的数据框,其中每个组存储在一行中:
| Number | Register | City | Id | Share | Name | Born | c | f | h | i |
|---|---|---|---|---|---|---|---|---|---|---|
| 01600 | 4314 | London | 1 | 73/1284 | John Smith | 1960-01-01 | NaN | 4222/2001 | 1334/2000 | 5774/2000 |
| 01600 | 4314 | London | 4 | 58/1284 | Boris Morgan | 1965-01-01 | 4222/1988 | 4222/2000 | NaN | NaN |
我最初的方法是首先导入文本文件并为每个案例应用正则表达式:
import pandas as pd
import re
df = open(r'Test.txt', 'r').read()
for line in re.findall('SHARE.*', df):
print(line)
但可能有更好的方法。
非常感谢任何帮助。提前致谢。
【问题讨论】: