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

如何用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 19:45:34