Python 将类似系列的数据文件导入熊猫
以下是数据文件的示例:Python 将类似系列的数据文件导入熊猫,python,pandas,text,dataframe,series,Python,Pandas,Text,Dataframe,Series,以下是数据文件的示例: ===== name aaa place paaa date Thu Oct 1 12:02:03 2015 load_status 198 add_name naaa [---blank line---] ===== name bbb place pbbb date Thu Oct 3 21:20:36 2015 load_sta
=====
name aaa
place paaa
date Thu Oct 1 12:02:03 2015
load_status 198
add_name naaa
[---blank line---]
=====
name bbb
place pbbb
date Thu Oct 3 21:20:36 2015
load_status 2000.327
add_name nbbb
[---blank line---]
在一个文件中可能有数百条这样的记录
我希望得到一个熊猫对象,如下所示:
name | place | date | load_status | add_name
---------------------------------------------------------------
aaa | paaa | Thu Oct 1 12:02:03 2015 | 198 | naaa
bbb | pbbb | Thu Oct 3 21:20:36 2015 | 2000.327 | nbbb
每个记录中的字段数相同:因此所有记录都有一些“名称”、“位置”等
我可以将文件转换为“bash+grep+awk”,然后将其作为csv读取,但对于只有Python和Windows的用户来说,这并不实用。
使用Python转置文件,然后将其作为csv读取看起来有些过分,因为我希望Pandas能够以某种方式处理这种情况
我想到了Series+dtype和read_table,但无法让它们为我工作。这里是Python中的一个简单循环。之后你必须做一些清洁,然后做一些检查,但这应该让你开始
import pandas as pd
records = []
this_record = {}
with open(input_fn, 'r') as f:
for line in f:
if line.strip() == '':
records.append(this_record)
this_record = {}
continue
elif line.startswith('='):
continue
line = line.split()
this_record[line[0]] = ' '.join(line[1:]).strip()
df = pd.DataFrame.from_records(records)
虽然这个解决方案对我的54条记录的文件很有吸引力,但我仍然想知道有没有办法让panda文本文件解析器为我做这件事。例如,如果我将从文件行中删除基本上冗余的额外记录分隔符
==
(我还可以在文件开头添加空行
,以便记录分隔符在整个文件中保持一致:2行-一行为空,一行为=
符号)。