2013-05-29 7 views
1

Я хотел бы извлечь определенный раздел 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» в нем.

Спасибо,

ответ

2
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 
0

Это также работал

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

session['RU_2'] = session['REFERRERURL'].apply(extract) 
Смежные вопросы