猿问

从 pandas DataFrame 条目中删除不必要的字符

假设我有以下 DataFrame:


df = pd.DataFrame([['x (xyz)', 'y [abc]'],['a (xyz)', 'b [bca]'],['xa (zyx)', 'yb [cab]']])

我想要以下输出:


    0   1

0   x   y

1   a   b

2   xa  yb

目前,我正在使用以下代码进行操作:


df.iloc[:,0] = df.iloc[:,0].str.replace(r'\(.*\)','')

df.iloc[:,1] = df.iloc[:,1].str.replace(r'\[.*\]','')

有没有办法简化它?由于在每个单元格中,我都试图删除(or之后的所有字符[,有没有办法.join在一行中使用和编写它?我只是问,因为如果我有 100 个列需要进行类似的清理,那么我现在所做的方式将变得非常乏味。


编辑:我刚刚意识到,


df.iloc[:,0]=df.iloc[:,0].apply(lambda x: x[:x.find(' (')])

df.iloc[:,1]=df.iloc[:,1].apply(lambda x: x[:x.find(' [')])

也会工作。但是,我也不知道如何编写单个apply函数。有没有办法将这两行代码结合起来?


慕森卡
浏览 165回答 1
1回答

撒科打诨

你可以使用:df.replace(r'\s\(.*\)|\s\[.*\]','', regex=True)    0   10   x   y1   a   b2  xa  yb
随时随地看视频慕课网APP

相关分类

Python
我要回答