如何删除熊猫列中的单词

时间:2018-07-12 12:52:36

标签: python-3.x pandas

在这里,我试图删除一列中的单词,并仅在新列中的括号中打印(单词)单词。我的数据是

column A     
john(son)
jasmine(jas)
cathy(ct)
duke(dk)
james(jm)

必需的输出必须像

columnA          ColumnB
john(son)          son
jasmine(jas)       jas
cathy(ct)          ct
duke(dk)            dk
james(jm)           jm

任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:1)

str.extract与正则表达式模式r"\((.*?)\)"一起使用

import pandas as pd
df = pd.DataFrame({"columnA":['john(son)', 'jasmine(jas)', 'cathy(ct)', 'duke(dk)', 'james(jm)']})
df["columnB"] = df["columnA"].str.extract(r"\((.*?)\)" , expand=True)
print(df)

输出:

        columnA columnB
0     john(son)     son
1  jasmine(jas)     jas
2     cathy(ct)      ct
3      duke(dk)      dk
4     james(jm)      jm

答案 1 :(得分:0)

另一个选择:

import pandas as pd
import re
df['B'] = df['A'].apply(lambda x: re.search(r'\((.*?)\)',x).group(1))

输出:

        A          B
0   john(son)      son
1   jasmine(jas)   jas
2   cathy(ct)      ct
3   duke(dk)       dk
4   james(jm)      jm

答案 2 :(得分:0)

pandorable一起

df['column B']=df['column A'].str.split('(',expand=True)[1].str[:-1]

答案 3 :(得分:0)

另一种选择:但是以上选择更好,无论如何我都这样...

patten = re.compile('.*\((\w+)\).*')
df["column2"] = [re.search(patten,i).group(1) for i in df.column1.values]

        column1 column2
0     john(son)     son
1  jasmine(jas)     jas
2     cathy(ct)      ct
3      duke(dk)      dk
4     james(jm)      jm