我有一个包含财务数据的pandas数据框,并希望从特定列的每个单元格中提取任意10位数字。单元格可以看起来像这样:'RECLASS 1239875309823 APPLE 0123456789 INV‘。10位数字可以位于字符串的开头,恰好在结尾之前,也可以位于字符串之间的任意位置。有没有办法我可以写一个函数,它不需要永远运行?(Dataframe有超过100k的行)
发布于 2021-03-17 17:57:13
我希望我把你的例子弄对了。下面您可以看到,如何使用正则表达式在pandas中提取10位数字。
df = pd.DataFrame({'value':['RECLASS 1239875309823 APPLE 0123456789 INV']})
df['num'] = df['value'].str.extract(r'(\b\d{10}\b)')
df
>>>
value num
0 RECLASS 1239875309823 APPLE 0123456789 INV 0123456789发布于 2021-03-17 18:02:56
如果您只想提取10位数,而不想提取10位或更长的数位,请使用:
df = pd.DataFrame({'value':['RECLASS 1239875309823 APPLE 0123456789 INV']})
df['extracted_10_digit'] = df['value'].str.extract(r'(\b\d{10}\b)')
value extracted_10_digit
0 RECLASS 1239875309823 APPLE 0123456789 INV 0123456789发布于 2021-03-17 18:02:26
import pandas as pd
df = pd.DataFrame({'cell_value':['RECLASS 1239875309823 APPLE 0123456789 INV']})
pat = r'\b[A-Z]+\b'
df['cell_output']=df['cell_value'].replace(pat,'',regex=True).astype(str).str[:11]
df cell_value cell_output
0 RECLASS 1239875309823 APPLE 0123456789 INV 1239875309https://stackoverflow.com/questions/66670580
复制相似问题