我正在编写一个脚本,将apache日志文件的请求参数解析到pandas表中
请求示例如下:
GET /v1/board?id=8504178&limit=1&to=8504177 HTTP/1.1
GET /v1/connections?from=850417&to=8504177 HTTP/1.1
GET /v1/location?query=850417
参数多,顺序不固定。所以我认为pandas方法extract()将不起作用。 这就是我尝试使用extractall()的原因。我的正则表达式的第一个版本及其提取如下:
req_patt = ("(?P<request>GET) \/v1\/(?P<resource>connections|stationboard|locations)|"
"from=(?P<from>.*?)&|"
"to=(?P<to>\d*|\w*)(?P<to_del>&|\s)"
)
df_temp = df['fullrequest'].str.extractall( req_patt )
所以我得到了这个数据帧:
actual output:
index requests resources from to
(0, 0) GET connections nan nan
(0, 1) nan nan 8504178 nan
(0, 2) nan nan nan 8504177
(1, 0) GET stationboard nan nan
(1, 1) nan nan nan 8504177
但最后我还是想要这样的东西:
expected output:
index requests resources from to
0 GET connections 8504178 8504177
1 GET stationboard nan 8504177
最后我的问题是: 如何将这些单行连接到一行
你可以用
输出:
要获取索引,可以使用
ndf.index = ndf.index.str[-2]
相关问题 更多 >
编程相关推荐