用括号中的值替换pandas列值,前面带逗号

时间:2017-12-21 09:51:00

标签: python regex python-3.x pandas

我有一个数据框,其中一列包含名称,部分列在括号中,如下所示:

Names
Apple (juicy)
Banana (crunchy)
Grape (sour)

我想将其更改为以下格式:

Names
Apple, juicy
Banana, crunchy
Grape, sour

如何使用pandas和regex实现这一目标?我试过这个:

df['Names'] = df1['Names'].str.replace(r"\s+\(.*\)",", " + r"\(.*\)")

但问题出在最后一点(r"(。*)"),我不知道如何成功转移括号内的任何内容。通过上面的代码,我得到了这个:

Names
Apple, \(.*\) 
Banana, \(.*\) 
Grape, \(.*\) 

2 个答案:

答案 0 :(得分:1)

使用捕获组并通过反向引用在替换部件中引用捕获的字符。

df['Names'] = df1['Names'].str.replace(r"\s+\((.*)\)", r", \1")

答案 1 :(得分:1)

您是否必须使用regex

你可以这样做

df['Names'] = df.Names.apply(lambda x: x.replace('(','').replace(')',''))

这将删除任何字符串中的任何括号。