【发布时间】:2016-01-23 00:25:49
【问题描述】:
我有一个包含 1,770,781 行表单的日志文件
[02/Jan/2015:08:08:43] "GET /click?article_id=139&user_id=19550 HTTP/1.1" 200 3078
我想提取时间、article_id 和 user_id,并将它们组合成一种方便的格式进行分析。现在,我有以下代码可以提取这些元素并尝试将它们组合到 Pandas DataFrame 中:
logs = pd.DataFrame(columns=['time', 'article_id', 'user_id'])
regex = '\[(?P<time>.*?)\] "GET (.*?=)(?P<article_id>\d+)(&.*?=)(?P<user_id>\d+)'
for line in log_file:
time = re.match(regex, line).group('time')
article_id = re.match(regex, line).group('article_id')
user_id = re.match(regex, line).group('user_id')
logs.append([time, article_id, user_id])
但这需要很长时间才能运行,我开始认为我应该放弃这种方法。有什么办法可以提高效率吗?尝试这样做是否现实?如果没有,是否有更好的方法来获取这些数据?
【问题讨论】:
标签: python apache pandas optimization