如何在自定义函数中使用str.extract提取DataFrame指定字符串?
问题解决方法
你的代码存在语法、命名和逻辑上的多处错误,修正后的可行代码如下:
def extract_ml(col): # 用原始字符串避免转义问题,括号是捕获组,pandas的str.extract要求至少一个捕获组 extracted_result = col.str.extract(r'(\d+ milliliter)') return extracted_result
错误点说明:
- 别用
str当参数名,这是Python内置的字符串类型名,会覆盖内置函数导致冲突,换成col这类自定义名称。 - 原代码里的字符串
'\d+ milliliter'没闭合引号,还错误地把参数str塞到extract的参数里,语法完全错误。 - 你把提取结果赋值给
pattern后,却返回了原参数,等于没做提取操作,必须返回提取后的结果。 - 函数内部代码要缩进,return语句要和def处于同一缩进层级(原代码里return没缩进)。
使用示例:
假设你的DataFrame列名为content,调用方式如下:
import pandas as pd df = pd.DataFrame({'content': ['abc 100 milliliter xyz', 'test 200 milliliter demo']}) df['extracted_ml'] = extract_ml(df['content']) print(df)
如果只需要提取数字部分,把模式改成r'(\d+) milliliter'即可。
内容的提问来源于stack exchange,提问作者user20649218
相关产品推荐
相关产品推荐

