从中提取值并创建新列

时间:2013-05-29 16:06:55

标签: pandas

我想提取一个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 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

这也有效

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

session['RU_2'] = session['REFERRERURL'].apply(extract)