在这里,我试图删除一列中的单词,并仅在新列中的括号中打印(单词)单词。我的数据是
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
任何人都可以帮助我吗?
答案 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