首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用pandas读取日志文件

使用pandas读取日志文件
EN

Stack Overflow用户
提问于 2017-11-23 17:58:05
回答 2查看 17.4K关注 0票数 8

我有一个用read_csv或read_table在pandas中尝试读取的日志文件。我得到了这个结果的例子:

代码语言:javascript
运行
复制
0    date=2015-09-17    time=21:05:35     duration=0    etc...

在1列上。

我想拆分每一行,取其名称(如日期、时间等)并将它们转换为列,这样我就可以得到:

代码语言:javascript
运行
复制
          date           time     duration   ...
  0    2015-09-17      21:05:35      0              

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2018-11-02 03:26:00

我知道这是一个古老的帖子,但我遇到了同样的问题,并找到了解决方案。错误Expected n fields in line n, saw n可能是由于每行具有不同的列数。如果每行的列排序不同,这种方法也不好用。我在这里写了一个示例代码,它将您的日志转换为json,然后再转换为pandas Dataframe。

代码语言:javascript
运行
复制
import pandas as pd
import json

path='log_sample.log'

log_data=open(path,'r')
result={}
i=0
for line in log_data:
    columns = line.split('') #or w/e you're delimiter/separator is
    data={}
    for c in columns:
        key = c.split('=')[0]
        value=c.split('=')[1]
        data[key]=value
    result[i]=data
    i+=1
j=json.dumps(result)

df=pd.read_json(j, orient='index')
票数 2
EN

Stack Overflow用户

发布于 2017-11-23 18:09:41

-编辑答案以解决间距不一致的问题:

不确定pythonic方法应该是什么,但这里有一个方法可以工作。

以OP的数据示例为例:

代码语言:javascript
运行
复制
0    date=2015-09-17    time=21:05:35     duration=0
1    date=2015-09-17    time=21:05:36     duration=0
2    date=2015-09-17    time=21:05:37     duration=0
3    date=2015-09-17    time=21:05:38     duration=0
4    date=2015-09-17    time=21:05:39     duration=0
5    date=2015-09-17    time=21:05:40     duration=0

我遍历每一行并在等号处拆分,然后抓取所需的文本:

代码语言:javascript
运行
复制
import pandas as pd

log_data  = open('log_sample.txt', 'r')
split_list = []

for line in log_data:
    thing1 = line.split('=')
    #print(thing1)
    date = thing1[1][:10]
    time = thing1[2][:8]
    dur = thing1[3]

    split_list.append([date, time, dur])

df = pd.DataFrame(split_list, columns=['date', 'time', 'duration'])
df

-第一个答案:

正如@jezrael在评论中提到的,你可以在read_csv中使用"sep“参数。

代码语言:javascript
运行
复制
pd.read_csv('test.txt', sep=r'\\t', engine='python') #[1]

请参见:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47452552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档