我想提取一个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'的列。
谢谢,
答案 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)