使用带字段说明符的Pandas将平面文件读入数据帧

2024-09-30 12:17:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用pandas将一个平面文件读入一个数据帧,但似乎无法获得正确的格式。我的文件每行有可变数量的字段,如下所示:

TIME=20131203004552049|CHAN=FCJNJKDCAAANPCKEAAAAAAAA|EVNT=NVOCinpt|MIME=application/synthesis+ssml|TXID=NUAN-20131203004552049-FCJNJKDCAAANPCKEAAAAAAAA-txt|TXSZ=1167|UCPU=31|SCPU=15
TIME=20131203004552049|CHAN=FCJNJKDCAAANPCKEAAAAAAAA|EVNT=NVOCsynd|INPT=1167|DURS=5120|RSTT=stop|UCPU=31|SCPU=15
TIME=20131203004552049|CHAN=FCJNJKDCAAANPCKEAAAAAAAA|EVNT=NVOClise|LUSED=0|LMAX=100|OMAX=95|LFEAT=tts|UCPU=0|SCPU=0

我在|处有字段分隔符,我将所有唯一键的列表拉入keylist,并尝试使用以下方法读入数据:

^{pr2}$

这错误地构建了数据帧,因为我没有指定任何方法来识别行中的键标签。我有点卡住了,不知道该用哪种方法来研究——例如,我应该用.read_json()?在


Tags: 文件数据方法pandas数量time格式平面
1条回答
网友
1楼 · 发布于 2024-09-30 12:17:52

不知道是否有一个巧妙的方法来做到这一点。有时,当数据结构与规范有很大不同时,在Python端对其进行预处理是最容易的。当然,它没有那么快,但由于您可以立即以更标准的格式保存它,所以通常不值得担心。在

单向:

with open("wfield.txt") as fp:
    rows = (dict(entry.split("=",1) for entry in row.strip().split("|")) for row in fp)
    df = pd.DataFrame.from_dict(rows)

产生

^{pr2}$

在你得到这个之后,你可以根据需要重塑。(我不确定您是否希望将行与同一时间和更改组合在一起。)


编辑:如果您使用的pandas的旧版本不支持将生成器传递给from_dict,则可以从列表中构建它:

df = pd.DataFrame(list(rows))

但请注意,您必须在事后将列从字符串转换为数字列。在

相关问题 更多 >

    热门问题