我有一个包含财务数据的pandas数据帧,希望从某一列的每个单元格中提取任何10位数字。细胞可以是这样的:"RECLASS 123987530823 APPLE 0123456789 INV"。10位数字可以位于字符串的开头、末尾之前或两者之间的任何位置。有没有什么方法可以让我编写一个不需要很长时间就能运行的函数?(数据帧有超过10万行(
如果您想提取精确为10位的数字,而不是10位或更长的数字,请使用:
df = pd.DataFrame({'value':['RECLASS 1239875309823 APPLE 0123456789 INV']})
df['extracted_10_digit'] = df['value'].str.extract(r'(bd{10}b)')
value extracted_10_digit
0 RECLASS 1239875309823 APPLE 0123456789 INV 0123456789
我希望你的例子是正确的。下面您可以看到,如何使用正则表达式提取熊猫中的10位数字。
df = pd.DataFrame({'value':['RECLASS 1239875309823 APPLE 0123456789 INV']})
df['num'] = df['value'].str.extract(r'(bd{10}b)')
df
>>>
value num
0 RECLASS 1239875309823 APPLE 0123456789 INV 0123456789
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 1239875309