如何用Pandas移除DataFrame列中仅含整数的括号内容
解决DataFrame中仅移除含纯整数的括号内容问题
问题说明
需要移除DataFrame列中仅包含整数的括号及内部内容,但保留包含非整数内容的括号。原代码使用str.replace(r"\(.*\)","")会移除所有括号内容,不符合需求。
示例输入:
import pandas as pd df = pd.DataFrame({ 'col': ['Bear (123)', 'Dog (No 2a) (1502)', 'Cat Dog (No 7b) (16772)', 'Bear (123)']})
预期输出:
col 0 Bear 1 Dog (No 2a) 2 Cat Dog (No 7b) 3 Bear
解决方案
使用精准的正则表达式匹配括号内仅为纯整数的模式,替换为空字符串即可。正则表达式r"\(\d+\)"的匹配逻辑:
\(:匹配左括号\d+:匹配一个或多个连续数字(确保是纯整数)\):匹配右括号
执行替换的代码如下:
import pandas as pd df = pd.DataFrame({ 'col': ['Bear (123)', 'Dog (No 2a) (1502)', 'Cat Dog (No 7b) (16772)', 'Bear (123)']}) # 仅移除括号内为纯整数的内容 df['col'] = df['col'].str.replace(r"\(\d+\)", "", regex=True) # 可选:若要去除替换后残留的多余空格,可追加以下代码 # df['col'] = df['col'].str.strip() print(df)
执行后输出与预期完全一致:
col 0 Bear 1 Dog (No 2a) 2 Cat Dog (No 7b) 3 Bear
补充说明
- 该正则只会匹配括号内全是数字的情况,不会干扰包含字母、符号等非纯整数的括号内容(比如
(No 2a)) - 如果需要统一规整字符串中的空格,可使用
str.replace(r"\s+", " ", regex=True)将多个连续空格替换为单个空格
内容的提问来源于stack exchange,提问作者jonboy
相关产品推荐
相关产品推荐

