Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
提取多个URL-Python_Python_Python 3.x_Pandas_Dataframe - Fatal编程技术网

提取多个URL-Python

提取多个URL-Python,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我想从存储在panda数据框中的文本(注释)中提取几个链接。我的目标是将提取的URL添加到原始数据集的新列中。通过使用以下应用于文本的方法,我能够提取注释并将其存储在变量URL中,并将其转换为另一个数据帧。在这种情况下,我不确定这是否是提取必要信息的有效方法 URL = (ALL.textOriginal.str.extractall("(?P<URL>(https?://(?:www)?(?:[\w-]{2,255}(?:\.\w{2,6}){1,2})(?:/[\w&%?

我想从存储在panda数据框中的文本(注释)中提取几个链接。我的目标是将提取的URL添加到原始数据集的新列中。通过使用以下应用于文本的方法,我能够提取注释并将其存储在变量URL中,并将其转换为另一个数据帧。在这种情况下,我不确定这是否是提取必要信息的有效方法

URL = (ALL.textOriginal.str.extractall("(?P<URL>(https?://(?:www)?(?:[\w-]{2,255}(?:\.\w{2,6}){1,2})(?:/[\w&%?#-]{1,300})))").reset_index('match', drop=True))

URL_df = pd.DataFrame(data=URL)
URL_df.drop([1],axis=1)

gives me:

596    https://www.tag24.de/nachrichten
596    http://www.tt.com/panorama 
596    http://www.wz.de/lokales
666    https://www.svz.de/regionales
666    https://www.watson.ch/Leben
...    ...
我还尝试通过应用以下方法将URL直接存储到原始数据帧:

ALL['URL'] = ALL.textOriginal.str.extractall("(?P<URL>(https?://(?:www)?(?:[\w-]{2,255}(?:\.\w{2,6}){1,2})(?:/[\w&%?#-]{1,300})))").reset_index('match', drop=True))
我认为需要:

另一个解决方案是,它返回
多索引
,因此有必要通过创建
列表
s按一级创建
groupby

pat = "(https?://(?:www)?(?:[\w-]{2,255}(?:\.\w{2,6}){1,2})(?:/[\w&%?#-]{1,300}))"

ALL['URL']  = ALL.textOriginal.str.extractall(pat).groupby(level=0)[0].apply(list)
print (ALL)
                                        textOriginal  \
0  https://www.tag24.de/nachrichten http://www.tt...   
1  https://www.svz.de/regionales https://www.wats...   

                                                 URL  
0  [https://www.tag24.de/nachrichten, http://www....  
1  [https://www.svz.de/regionales, https://www.wa...  
设置

ALL = pd.DataFrame({'textOriginal': ['https://www.tag24.de/nachrichten http://www.tt.com/panorama http://www.wz.de/lokales', 'https://www.svz.de/regionales https://www.watson.ch/Leben']})

假设您有一个包含两列的数据框,“Indice”和“Link”,其中Indice不是唯一的。您可以通过以下方式聚合具有相同标记的所有链接:

myAggregateDF = myDF.groupby('Indice')['Link'].apply(list).to_frame()
这样,您将获得一个包含两列的新数据帧,“Indice”和“Link”,其中“Link”是以前链接的列表


但请注意,这种方法并不有效。Groupby内存不足,这可能是大数据帧的问题

通过执行代码,我收到一个空值,如:0[]1[]2[]3[]4[]@Daniel-对我来说,它正在工作,添加了另一个带有样本数据的解决方案。嗯,好的,对我来说,我只收到NaN值:(@Daniel-你能给问题添加一些样本数据吗?@Daniel-超级,很高兴能帮上忙!
pat = "(https?://(?:www)?(?:[\w-]{2,255}(?:\.\w{2,6}){1,2})(?:/[\w&%?#-]{1,300}))"

ALL['URL']  = ALL.textOriginal.str.extractall(pat).groupby(level=0)[0].apply(list)
print (ALL)
                                        textOriginal  \
0  https://www.tag24.de/nachrichten http://www.tt...   
1  https://www.svz.de/regionales https://www.wats...   

                                                 URL  
0  [https://www.tag24.de/nachrichten, http://www....  
1  [https://www.svz.de/regionales, https://www.wa...  
ALL = pd.DataFrame({'textOriginal': ['https://www.tag24.de/nachrichten http://www.tt.com/panorama http://www.wz.de/lokales', 'https://www.svz.de/regionales https://www.watson.ch/Leben']})
myAggregateDF = myDF.groupby('Indice')['Link'].apply(list).to_frame()