从pandas dataframe构造URL查询

时间:2015-09-24 10:37:44

标签: python pandas dataframe python-requests

采用以下形式的pandas数据框:

fname lname age
mark  trumb 34
samb  jones 26

我想使用requests模块构建一个url查询。 通常情况下,我会像这样构建网址:

payload = {'key1':'value1','key2':'value2'}
headers = {'content-type': 'application'}
base_url = 'https://website.com/'
req = requests.post(base_url,headers=headers,params=payload)

我如何最好地使用它,以便数据帧列成为键,行成为值?

新的输出列(req)如下所示:

fname lname age req
mark  trumb 34  https://website.com?fname=mark&lname=trumb&age=34
samb  jones 26  https://website.com?fname=samb&lname=jones&age=26

1 个答案:

答案 0 :(得分:1)

您可以像这样构建它:

In [46]:
df['req'] = 'https://website.com?' + 'fname=' + df['fname'] + '&lname=' + df['lname'] + '&age=' + df['age'].astype(str)
df

Out[46]:
  fname  lname  age                                                req
0  mark  trumb   34  https://website.com?fname=mark&lname=trumb&age=34
1  samb  jones   26  https://website.com?fname=samb&lname=jones&age=26

动态方法可以通过将列名与值相结合来完成:

In [106]:
def func(x):
    tuple_list = list(zip('&' + x.index + '=', x.astype(str)))
    return ''.join([''.join(item) for item in tuple_list])

df['req'] = r'https://website.com?' + df.apply(lambda x: func(x), axis=1)
df['req']

Out[106]:
0    https://website.com?&name=mark&lname=trumb&age=34
1    https://website.com?&name=samb&lname=jones&age=26
Name: req, dtype: object