python - 从 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
函数。有没有办法把这两行代码也结合起来?
解决方案
你可以使用:
df.replace(r'\s\(.*\)|\s\[.*\]','', regex=True)
0 1
0 x y
1 a b
2 xa yb
推荐阅读
- laravel - 为 Laravel 宅基地设置主机
- reactjs - 使用 Redux 工具包运行 React Native 应用程序会引发错误
- hibernate - 如何将以下休眠注释转换为JPA
- eclipse - 在事件处理程序中访问数据源
- kotlin - 从设置中获取 gradle 属性
- python-3.x - 将动态字段添加到序列化程序类
- javascript - 如何在提交时返回第二份注册表?
- oracle - LiveSQL 不断向我显示:ORA-00933:SQL 命令未正确结束
- javascript - 从输入下拉菜单转到 URL
- javascript - Vuex 状态一直说它未定义