我有以下格式的 apache 访问日志文件,我已使用 apache 日志解析器将其导入到 pandas 数据框。
123.231.12.97 - - [10/Jun/2013:06:04:46 -0600] "GET /styles-gadgets.css HTTP/1.0" 200 3036 "http://www.gadgets.lk/" "Mozilla/5.0 (Windows NT 5.1; rv:21.0) Gecko/20100101 Firefox/21.0"
我想按 IP 和用户代理对它进行分组。以下是我的代码。
log_list = []
for line in f:
data = p.parse(line)
data['%t'] = data['%t'][1:12]+' '+data['%t'][13:21]+' '+data['%t'][22:27]
log_list.append(data)
df = pandas.DataFrame(log_list)
#-------rename data columns in pandas dataframe
df = df.rename(columns={'%>s': 'Status', '%b':'Bytes Returned',
'%h':'IP', '%l':'Username', '%r': 'Request', '%t': 'Time', '%u': 'Userid', '%{Referer}i': 'Referer', '%{User-Agent}i': 'Agent'})
test = df.groupby(['IP', 'Agent'])
这种方法正确吗?test = df.groupby(['IP', 'Agent'])
. 我怎么能打印这个?(使用 print test.groups 会产生令人困惑的结果)
我想看到结果:
IP Agent
123.231.12.97 Mozilla/5.0 (Windows NT 5.1; rv:21.0) Gecko/20...
100.231.12.97 Mozilla/5.0 (Windows NT 5.1; rv:21.0) Gecko/20...