2015-11-06 30 views
0

我有熊猫数据框,其中一列“url”包含相对url路径。此列中的值需要附加基础网址以转换为绝对网址。在大熊猫数据框(Python 3.4)中对列的每个值执行urljoin操作的Python方法

我确定遍历列的每一行并不是最好的方法。我可以通过使用Lambdas操作来完成此操作。然而,lambda对我来说似乎有点神奇,我对它并不那么舒服。

你能推荐一个更好的方法吗?谢谢。

from urllib.parse import urljoin 
    import pandas as pd 
    . 
    base_url = "http://www.website.com" 
    . 
    my_df["relatie_url"] = my_df["relatie_url"].map(lambda x : urljoin(base_url, x)) 
+0

注意,如果你必须执行'urljoin'那么使用'map'或'apply'就可以了 – EdChum

+0

你问了一些questi已经收到答案的答案,你有没有接受答案的原因?如果答案不够,那么你应该提供问题的模式数据/反馈,如果可能的话提供答案的人,以便他们可以修改答案。 SO上的礼仪是接受已解决您问题的答案 – EdChum

回答

1

IIUC你可以这样做:

my_df["relatie_url"] = base_url + my_df["relatie_url"] 

这将是比调用更快map

例子:

In [12]: 
df = pd.DataFrame({'site':['/home/index.html', '/images/src']}) 
df 

Out[12]: 
       site 
0 /home/index.html 
1  /images/src 

In [13]: 
base_url = "http://www.website.com" 
df['site'] = base_url + df['site'] 
df 

Out[13]: 
            site 
0 http://www.website.com/home/index.html 
1  http://www.website.com/images/src 
+0

这很好,很简单。谢谢。考虑到我们只是在这里进行字符串连接,与urljoin相比,这种方法有什么缺点吗? – HVS

+0

对于纯字符串连接,这将被矢量化,使用'map'和'apply'这只是一个'for'循环,所以这种方法对于大数据集 – EdChum