You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何将DataFrame列内方括号文本提取为独立列?

解决方案

直接用Pandas的字符串处理结合正则表达式就能实现,而且可以适配任意成对的括号(圆括号()、方括号[]、花括号{}):

完整代码示例

import pandas as pd

# 原始数据
column_1 = ["Northern Rockies, British Columbia [9A87]", "Northwest Territories [2H89]", "Canada [00052A]", "Division No. 1, Newfoundland and Labrador [52A]"]
column_2 = ["aa", "bb", "cc", "dd"]
column_3 = [4, 4.5, 23, 1]

# 创建DataFrame
df = pd.DataFrame(list(zip(column_1, column_2, column_3)), columns=['column_1', 'column_2', 'column_3'])

# 正则表达式:匹配任意成对括号及内部内容,分组提取括号内的文本
# 解释:
# [\(\[\{] 匹配左括号(圆/方/花)
# (.+?) 非贪婪匹配括号内的所有内容
# [\)\]\}] 匹配对应的右括号
df['column_4'] = df['column_1'].str.extract(r'([\(\[\{])(.+?)([\)\]\}])', expand=False)[1]

# 清理column_1:去掉括号及内部的内容,同时去除末尾可能存在的空格
df['column_1'] = df['column_1'].str.replace(r'\s*[\(\[\{].*?[\)\]\}]', '', regex=True)

# 查看结果
print(df)

输出结果

column_1 column_2  column_3 column_4
0               Northern Rockies, British Columbia       aa       4.0    9A87
1                        Northwest Territories       bb       4.5    2H89
2                                        Canada       cc      23.0  00052A
3  Division No. 1, Newfoundland and Labrador       dd       1.0     52A

适配说明

如果你的数据里混合了多种括号(比如有的用圆括号,有的用方括号),这个正则表达式也能正常提取,不需要修改代码。

内容的提问来源于stack exchange,提问作者Salahuddin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 13:25:15