Python 从dataframe列中获取括号周围的文本,并将输出复制到同一列

Python 从dataframe列中获取括号周围的文本,并将输出复制到同一列,python,regex,Python,Regex,我只想获取括号周围的文本,并将此文本保留在同一列中 我有以下数据帧df: id feature 1 mutation(MI:0118) 2 mutation(MI:0119) 3 mutation(MI:01120) 预期产出为: id feature 1 MI:0118 2 MI:0119 3 MI:01120 我尝试了下面的正则表达式,但它不允许我将其复制到同一列 df['feature'] = df['feat

我只想获取括号周围的文本,并将此文本保留在同一列中

我有以下数据帧df:

id     feature
1      mutation(MI:0118)
2      mutation(MI:0119)
3      mutation(MI:01120)
预期产出为:

id     feature
1      MI:0118
2      MI:0119
3      MI:01120
我尝试了下面的正则表达式,但它不允许我将其复制到同一列

df['feature'] = df['feature'].str.extract(r"\((.*?)\)", expand=False)

我收到以下警告,上面的代码正在将feature列中的所有值转换为NaN

/home/lib/python2.7/site-packages/ipykernel_launcher.py:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  """Entry point for launching an IPython kernel.

谢谢

请尝试以不同的模式使用以下代码:

df['feature'] = df['feature'].str.extract('.*\((.*)\).*', expand=False)
print(df)
输出:

   id   feature
0   1   MI:0118
1   2   MI:0119
2   3  MI:01120

嗯,
df['feature']=df['feature'].str.extract(r“\(.*?\)”,expand=False)
在我这边有效。如果您失败,请尝试
df['feature']=df['feature'].str.replace(r.*\([^()]*)\.*,r'\1')
是的,它工作正常。您能解释一下吗?'.*(*))你的正则表达式?Thanks@ranusharma检查这里:右上角是解释,请接受我的答案并投票。@U10 Forward抱歉之前太快了。但是在尝试了你的代码之后,我得到了复制错误。:(@ranusharma Try adding
import warnings;warnings.filterwarnings(“忽略”)
至屏幕顶部file@ranusharma这不是由这个引起的,如果你想问另一个问题,也接受我的答案:P