如何在Pandas中提取方括号内的数据?
提取DataFrame列中方括号内的字符串
你的正则表达式失败的核心原因是方括号[属于正则元字符,必须用反斜杠\转义后才能匹配实际的方括号字符。下面提供几种可行的解决方案:
方法1:使用str.extract(推荐,语法最简洁)
extract可以直接提取正则捕获组的内容,无需额外处理结果:
import pandas as pd # 构建示例DataFrame df = pd.DataFrame({ 'ID': [1, 2, 3], 'col1': ['[2023/01/06:12:00:00 AM]', '[2023/01/06:12:00:00 AM]', '[2023/01/06:12:00:00 AM]'] }) # 提取括号内的内容 df['col1'] = df['col1'].str.extract(r'\[(.*?)\]') print(df)
运行后输出:
ID col1 0 1 2023/01/06:12:00:00 AM 1 2 2023/01/06:12:00:00 AM 2 3 2023/01/06:12:00:00 AM
方法2:修正str.findall的正则表达式
将正则中的[转义为\[,同时处理findall返回的列表结果:
df['col1'] = df['col1'].str.findall(r'(?<=\[)([^\]]+)').str[0]
解释:(?<=\[)是转义后的正向预查,匹配左方括号之后的内容;[^\]]+匹配所有非右方括号的字符,最后用.str[0]取出列表中的唯一匹配项。
方法3:字符串切片(仅适用于格式完全统一的场景)
如果可以确定所有col1的字符串都是以[开头、]结尾,可直接用切片去掉首尾字符:
df['col1'] = df['col1'].str[1:-1]
内容的提问来源于stack exchange,提问作者unicorn
相关产品推荐
相关产品推荐

