📅  最后修改于: 2023-12-03 15:18:15.423000             🧑  作者: Mango
很多时候我们需要从一组字符串中提取包含的整数,例如从"abc578def"中提取整数578。在Python中,如果没有合适的工具,这将会是一个繁琐而且不好扩展的任务。不过好在Pandas提供了一个很方便的方法来解决这个问题。
Pandas中的str.extract
函数允许我们从一组字符串中提取匹配的子串,下面是一个例子,我们从字符串中提取包含的整数。
import pandas as pd
data = pd.DataFrame({'string': ['a1b2c3', 'abc', 'def5', 'hijk6lmn']})
data['number'] = data['string'].str.extract('(\d+)', expand=False).astype(float)
这个例子中,我们首先创建了一个包含四个字符串的DataFrame。然后我们使用str.extract
函数提取每个字符串中匹配的第一个连续整数。这个正则表达式'(\d+)'
为提取符合条件的子串而设计,其中\d
代表数字,+
代表一个或多个,()
用来标记需要提取的内容。注意我们使用了参数expand=False
,这使得提取出来的结果是一个Series
对象,而不是一个DataFrame对象,方便我们后续的操作。
最后我们将提取出来的结果转换成了float
类型,并将其保存到了新的一列number
中。
Pandas中的str.extract
非常方便,也非常灵活,使用正则表达式可以提取出各种不同类型的子串,例如整数、浮点数、日期等等。这个函数还有很多其它的参数和用法,大家可以查看官方文档以了解更多信息。
代码片段
import pandas as pd
data = pd.DataFrame({'string': ['a1b2c3', 'abc', 'def5', 'hijk6lmn']})
data['number'] = data['string'].str.extract('(\d+)', expand=False).astype(float)