【发布时间】:2017-06-26 01:53:46
【问题描述】:
我只需要提取 pandas 数据框中括号内的内容。我尝试使用 str.exratct() 但它不起作用。我需要提取帮助
数据:(在数据帧中,这是来自一行的样本数据)
作者:陈天旭(陈天旭)[1];特里比特 MA (特里比特马克 A.)[ 2 ] ;杨毅(杨毅)[3];李小美(李小梅)[4]
【问题讨论】:
标签: pandas dataframe text-extraction data-extraction
我只需要提取 pandas 数据框中括号内的内容。我尝试使用 str.exratct() 但它不起作用。我需要提取帮助
数据:(在数据帧中,这是来自一行的样本数据)
作者:陈天旭(陈天旭)[1];特里比特 MA (特里比特马克 A.)[ 2 ] ;杨毅(杨毅)[3];李小美(李小梅)[4]
【问题讨论】:
标签: pandas dataframe text-extraction data-extraction
您可以使用regular expression:
import pandas as pd
import re
dataset = pd.DataFrame([{'DATA': 'By:Chen TX (Chen Tianxu)[ 1 ] ; Tribbitt MA (Tribbitt Mark A.)[ 2 ] ; Yang Y (Yang Yi)[ 3 ] ; Li XM (Li Xiaomei)[ 4 ]'}])
print(dataset)
数据框是:
DATA
0 By:Chen TX (Chen Tianxu)[ 1 ] ; Tribbitt MA (Tribbitt Mark A.)[ 2 ] ; Yang Y (Yang Yi)[ 3 ] ; Li XM (Li Xiaomei)[ 4 ]
然后,使用 regular expression 和 lambda 函数,这样您就可以提取名称并将其保存到名为 names 的不同列中:
# regular expression from: https://stackoverflow.com/a/31343831/5916727
dataset['names'] = dataset['DATA'].apply(lambda x: re.findall('\((.*?)\)',x))
print(dataset['names'])
names 列的输出为:
0 [Chen Tianxu, Tribbitt Mark A., Yang Yi, Li Xiaomei]
【讨论】:
Happy Coding.
Chen Tianxu, Tribbitt Mark A., Yang Yi, Li Xiaomei作为单个字符串,因为现在它是用,分隔的字符串列表