パラメータ付きの URL アドレスを含むリストがあります。
http://example.com/?param1=apple¶m2=tomato¶m3=carrot
http://sample.com/?param1=banana¶m3=potato¶m4=berry
http://example.org/?param2=apple¶m3=tomato¶m4=carrot
各 URL には、4 つのパラメーターのいずれかを含めることができます。
URL パラメータを抽出して Pandas DataFrame に追加したいと考えています。DataFrame には、URL 列とパラメーターを含む 4 つの列が必要です。URL にパラメーターが存在しない場合、セルは空です。
URL param1 param2 param3 param4
... apple tomato carrot
... banana potato berry
... apple tomato carrot
パラメータを簡単に抽出できるpython組み込みのurlparseモジュールを使用することを計画していました。
import urlparse
url = 'http://example.com/?param1=apple¶m2=tomato¶m3=carrot'
par = urlparse.parse_qs(urlparse.urlparse(url).query)
print par['param1'], par['param2']
Out: ['apple'] ['tomato']
urlparseを使用すると、URL のパラメーターのリストを取得できます。
import pandas as pd
urls = ['http://example.com/?param1=apple¶m2=tomato¶m3=carrot',
'http://sample.com/?param1=banana¶m3=potato¶m4=berry',
'http://example.org/?param2=apple¶m3=tomato¶m4=carrot']
df = pd.DataFrame(urls, columns=['url'])
params = [urlparse.parse_qs(urlparse.urlparse(url).query) for url in urls]
print params
Out: [{'param1': ['apple'], 'param2': ['tomato'], 'param3': ['carrot']},
{'param1': ['banana'], 'param3': ['potato'], 'param4': ['berry']},
{'param2': ['apple'], 'param3': ['tomato'], 'param4': ['carrot']}]
...
抽出されたパラメーターを DataFrame に追加する方法がわかりません。多分それを行うより良い方法がありますか?元のファイルは ~1m の URL です。