python-3.x - 如何使用正则表达式将数字与数据框分开?
问题描述
我已将 excel 表中的一整列读入数据框。该列中的每个单元格都有一堆带数字的单词(如电话号码)。如何循环数据框并使用正则表达式使用特定模式提取数字。
我试过下面的代码
for i in (df):
df.str.contains('(4[0-9]{12}([0-9]{3})|[25][1-7][0-9]{14}|6(011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}')
我知道我的正则表达式是错误的,但我收到以下错误。
编辑:我已经更新了我的正则表达式。单元格有这样的数据
“你好,我想点东西……我的卡号是45621……” 我想把卡号拿出来存一个文件。
Traceback (most recent call last):
File "c:/Program Files/Python37/Scripts/output.py", line 12, in <module>
df.str.contains('^f')
File "C:\Program Files\Python37\lib\site-packages\pandas\core\generic.py", line 5067, in __getattr__
return object.__getattribute__(self, name)
AttributeError: 'DataFrame' object has no attribute 'str'
解决方案
现在你正在打电话df.str
。这意味着您正在尝试访问数据框的 str 对象,这对 python 没有意义,因此会出现错误。不知道你想在那里做什么。在您的循环i
中将是列。从那里您可以遍历行,然后应用正则表达式。这在整个堆栈溢出中都有记录,但可能不是您想要采用的方法。
相反,您应该创建一个将单元格作为字符串接收并输出正则表达式后字符串的函数。然后,您可以使用apply()
inside pandas 将该功能一次应用于每个单元格。如果你用谷歌搜索“apply() pandas regex”,一堆不同的例子会告诉你如何做到这一点。一个这样的例子就是这个。
如果您提供更多关于您尝试完成的正则表达式的详细信息,我们可以帮助您更详细地制作上述结构。
推荐阅读
- r - 将变量从“dttm”转换为“POSIXCT”
- sql - SQL Server 数据库兼容性级别是否否定 SQL Server 版本兼容性
- json - 如何在结构中编组变量 JSON 响应
- selenium - 除了优先级属性之外,还有哪些其他方法可以在 selenium TestNG 中设置测试用例的优先级
- javascript - 获取具有图像大小的网页上的图像列表
- html - Chrome DevTools 显示比预期更宽
- hibernate - Hibernate/DB2 获取未知列错误 4460
- javascript - React Router - 返回最后访问的页面,而不是默认组件
- python-3.x - 服务器客户端操作系统错误之间的连接错误
- sql - 根据源 carValue 更新目的地中的 CarValue 列