3

我想提取 URL 的某些部分,驻留在 Pandas Dataframe 的列中,并将其设为新列。这

ref = df['REFERRERURL']
ref.str.findall("\\d\\d\\/(.*?)(;|\\?)",flags=re.IGNORECASE)

返回给我一个包含元组的系列。在创建系列之前,我怎样才能只取出该元组的一部分,所以我可以简单地将它变成一列?referrerurl 的示例数据是

http://wap.blah.com/xxx/id/11/someproduct_step2;jsessionid=....

在此示例中,我有兴趣创建一个仅包含“someproduct_step2”的列。

谢谢,

4

2 回答 2

4
In [25]: df = DataFrame([['http://wap.blah.com/xxx/id/11/someproduct_step2;jsessionid=....']],columns=['A'])

In [26]: df['A'].str.findall("\\d\\d\\/(.*?)(;|\\?)",flags=re.IGNORECASE).apply(lambda x: Series(x[0][0],index=['first']))
Out[26]: 
               first
0  someproduct_step2

在 0.11.1 中,这也是一种巧妙的方法

In [34]: df.replace({ 'A' : "http:.+\d\d\/(.*?)(;|\\?).*$"}, { 'A' : r'\1'} ,regex=True)
Out[34]: 
                   A
0  someproduct_step2
于 2013-05-29T16:16:53.437 回答
1

这也有效

def extract(x):
    res = re.findall("\\d\\d\\/(.*?)(;|\\?)",x)
    if res: return res[0][0]

session['RU_2'] = session['REFERRERURL'].apply(extract)
于 2013-05-31T07:12:23.467 回答