Python 如何将每个记录70000条的日志文件读取到一个数据帧中?

Python 如何将每个记录70000条的日志文件读取到一个数据帧中?,python,pandas,dataframe,logging,Python,Pandas,Dataframe,Logging,EDIT2:日志似乎是一个csv文件,以空格作为分隔符。我尝试使用csv文件读取器直接读取。但问题是所有这些文件都有3-4行描述,我需要先删除它们。尝试手动删除这些行,但成功了。现在的问题是,有没有一种方法可以跳过读取这些行(尝试了skiprows,但它给出了一些应该出现的字符错误)。我可以尝试使用open删除这些行,但这似乎需要做很多工作,需要编写120个文件。有解决办法吗 EDIT1:某些索引中的数据可能缺少值。问题仍然是如何将大型日志文件读入数据帧 所以我有3个月的日志,每个文件都是1天的

EDIT2:日志似乎是一个csv文件,以空格作为分隔符。我尝试使用csv文件读取器直接读取。但问题是所有这些文件都有3-4行描述,我需要先删除它们。尝试手动删除这些行,但成功了。现在的问题是,有没有一种方法可以跳过读取这些行(尝试了skiprows,但它给出了一些应该出现的字符错误)。我可以尝试使用open删除这些行,但这似乎需要做很多工作,需要编写120个文件。有解决办法吗

EDIT1:某些索引中的数据可能缺少值。问题仍然是如何将大型日志文件读入数据帧

所以我有3个月的日志,每个文件都是1天的日志。每个文件大约有70000多条记录/行。如何将它们读入单个数据帧

以下是我迄今为止所做的尝试:

log_data=open(path,'r')
result={}
j=0
for line in log_data:
  if j>3: #First three lines are comments and description
    columns = line.split(' ') 
    result[j-4] = {cats_list[i]: columns[i] for i in range(15)}
    # break

  j+=1
js=json.dumps(result)
df=pd.read_json(js, orient='index')
但是当j达到9998时,我得到的
列表索引超出了范围。这是内存限制还是什么?
以下是基本列:

cats_list = ['date', 'time', 's-sitename', 's-ip', 'cs-method', 'cs-uri-stem', 'cs-uri-query', 's-port', 'cs-username', 'c-ip', 'cs(User-Agent)', 'cs(Referer)', 'sc-status', 'sc-substatus', 'sc-win32-status']

与其说是内存问题,不如说是对文件包含的内容有错误的假设。内存可能是您试图执行的操作的一个问题,但它不会像那样表现出来。@johncleman是的,我认为数据在某些标记处缺少一些值,无论它是csv文件(可能与逗号分隔符不同)还是不是。如果是csv文件,请使用csv文件读取器。如果不是,那么将其加载到数据帧中意味着什么?您可能需要编写一个自定义解析器来确定哪些值在哪里丢失。您的问题似乎是,当日志文件没有以可靠的方式拆分为列时,如何将大型日志文件读入数据帧。如果这是您的问题,您需要提供更多详细信息。@JohnColeman这是一个以空格作为分隔符的csv文件。我尝试使用csv文件读取器直接读取。但问题是所有这些文件都有3-4行描述,我需要先删除它们。尝试手动删除这些行,但成功了。现在的问题是,有没有一种方法可以跳过读取这些行(尝试了skiprows,但它给出了一些应该出现的字符错误)。我可以尝试使用
open
删除这些行,但这似乎需要做很多工作,需要编写120个文件。有解决办法吗?