python3 - 从文本文件格式导入数据帧head1 = value | head2 = value

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python3 - 从文本文件格式导入数据帧head1 = value | head2 = value相关的知识,希望对你有一定的参考价值。

我查看了pandas文档,有几个选项可以将数据导入到pandas数据框中。在导入文本文件时,常见的方法似乎是导入csv文件。

我想使用的数据是这样格式化的日志文件:

timestamp=2018-09-08T11:11:58.362028|head1=value|head2=value|head3=value
timestamp=2018-09-08T11:15:25.860244|head1=value|head2=value|head3=value

我只需要将一些这些元素导入数据时间帧,比如说timestamp,head1和head3。

在csv表示法中,数据框看起来像这样:

timestamp;head1;head3
logfile row1 - value of timestamp; value of head1; value of head3
logfile row2 - value of timestamp; value of head1; value of head3
logfile row3 - value of timestamp; value of head1; value of head3

我可以使用这些数据编写一个csv文件,然后将其导入。但是有没有熊猫功能或将这些数据导入熊猫数据帧的直接方法?

提前谢谢你的帮助!

答案

我将解析并处理这样的文件:

with open('file.csv', 'r') as fh:
  df = pd.DataFrame([dict(x.split('=') for x in l.strip().split('|')) for l in fh])
  df = df[['timestamp', 'head1', 'head3']]

df

                    timestamp  head1  head3
0  2018-09-08T11:11:58.362028  value  value
1  2018-09-08T11:15:25.860244  value  value
另一答案

你可以做:

 columns = ['timestamp','head1','head2','head3']
 pd.read_csv(your_file.csv,sep='|',names = columns).drop('head2',1).replace('.*=','',regex=True)
另一答案

谢谢你们的出色解决方案!我使用了提供的解决方案,但在导入期间已经过滤了所需的行,因此日志文件中的其他不同结构元素不会打扰:

import pandas as pd
with open('logfile.txt', 'r') as fh:
  df = pd.DataFrame([dict(x.split('=') for x in l.strip().split('|') if x.find("timestamp") > -1 or x.find("head1") > -1 or x.find("head3") > -1) for l in fh])

以上是关于python3 - 从文本文件格式导入数据帧head1 = value | head2 = value的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 df.to_csv 为多索引数据帧 python3 格式化 csv 文件

由于日期格式,将数据从 txt 文件导入 IBM netezza SQL 数据库时出错

从导入的文本文件中着色一个单词,并保存为格式化的单词文档

从数据块中的另一个笔记本返回数据帧

pr剪辑好,输出XML文件,导入Davinci,为啥这里“混合帧率格式”变成了灰色?而且丢失素材

如何加快将数据帧导入熊猫