DataFrame图片:
我在DataFrame中有一列名为Contracting,另一列为Contractor。
例如,我需要将列承包商分解为2个新列:一列包含括号内的财务编号,另一列包含所有其余内容(描述)。
示例:
Contractor: Meo(504615947)
我需要它变成:
Contractor_Name: Meo and Contractor_Number:504615947
我试图这样做:
proc_2013[['contractor_description', 'contractor_NIF']]= pd.DataFrame(proc_2013['contractor'].str.split(('('),1).tolist())
proc2013['contractor_NIF'] = proc2013.contractor_NIF.str.extract('(\d+)')
问题1:
我也可以在括号内有一个名称描述,后跟我要提取的数字。
问题2:
有时,如果承包商来自国外,那么在财务编号的开头会带有一个字母(不仅是我最初假设的编号,使用第二行代码)。
所有会计数字都有9位数字。
答案 0 :(得分:2)
对于任何字母数字,您可以将\d
更改为\w
:
proc2013['contractor_NIF'] = proc2013.contractor_NIF.str.extract('\((\w+)\)')
答案 1 :(得分:2)
据我所知,这可能是一种解决方案,
df['contractor_name']=list(map(lambda x : x.split('(')[0],df['con']))
df['contractor_number']=list(map(lambda x : x.split('(')[-1][-10:-1],df['contractor']))
希望这会有所帮助。