如何从DataFrame列中提取括号内长度可变的子字符串?
提取DataFrame列中括号内的内容
嗨,这个需求用Pandas结合正则表达式就能完美解决!不管括号在字符串的哪个位置、里面内容多长,都能精准提取。
步骤说明
- 使用Pandas的
str.extract()方法,搭配专门匹配括号内容的正则表达式 - 正则表达式
\((.*?)\)的作用:\(:匹配左括号(转义是因为括号在正则里是特殊字符)(.*?):非贪婪模式捕获括号内的所有内容(.*?会匹配到第一个右括号为止,避免多括号场景的错误匹配)\):匹配右括号
完整代码示例
import pandas as pd # 你的原始DataFrame df = pd.DataFrame({ 'title': ['A', 'B', 'C'], 'TestData': ['Test1(data)', 't(data2)', 'Ts(data 3)'], 'Value': [1.0, 2.2, 3.3] }) # 提取括号内的内容并替换原TestData列 df['TestData'] = df['TestData'].str.extract(r'\((.*?)\)', expand=False) print(df)
运行结果
title TestData Value 0 A data 1.0 1 B data2 2.2 2 C data 3 3.3
额外说明
如果你的数据中存在多个括号的情况(比如Test(data1)(data2)),可以改用str.extractall()来提取所有括号内的内容,再根据需求合并或处理。
内容的提问来源于stack exchange,提问作者Varun Pius Rodrigues
相关产品推荐
相关产品推荐

