首页 > 解决方案 > 从 pandas 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函数。有没有办法把这两行代码也结合起来?

标签: pythonpython-3.xpandas

解决方案


你可以使用:

df.replace(r'\s\(.*\)|\s\[.*\]','', regex=True)

    0   1
0   x   y
1   a   b
2  xa  yb

推荐阅读