首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas 10位数字提取

Pandas 10位数字提取
EN

Stack Overflow用户
提问于 2021-03-17 17:47:10
回答 3查看 82关注 0票数 0

我有一个包含财务数据的pandas数据框,并希望从特定列的每个单元格中提取任意10位数字。单元格可以看起来像这样:'RECLASS 1239875309823 APPLE 0123456789 INV‘。10位数字可以位于字符串的开头,恰好在结尾之前,也可以位于字符串之间的任意位置。有没有办法我可以写一个函数,它不需要永远运行?(Dataframe有超过100k的行)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-03-17 17:57:13

我希望我把你的例子弄对了。下面您可以看到,如何使用正则表达式在pandas中提取10位数字。

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2021-03-17 18:02:56

如果您只想提取10位数,而不想提取10位或更长的数位,请使用:

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2021-03-17 18:02:26

代码语言:javascript
复制
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
代码语言:javascript
复制
    cell_value                                  cell_output
0   RECLASS 1239875309823 APPLE 0123456789 INV  1239875309
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66670580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档