pandas - Pandas - 删除所有值都是特定字符串的行
问题描述
我有一个_df
变量设置如下:
In [41]: _df
Out[41]:
0 1
0 validated_name1_conf66.67_err0.00 validated_name2_conf66.67_err0.00
1 - -
2 - -
3 Name Name2
4 XYZ ABC
5 XYZ ABC
6 - -
7 - -
8 - -
9 - -
10 - -
11
我想删除所有值都是特定的行string
,在这个例子中,特定的字符串是-
字符。
我可以通过下面的方法链来实现我想要实现的,我认为这是非常低效的
In [42]: (
...: _df
...: .T
...: .replace('-', np.nan)
...: .dropna(axis=1)
...: .T
...: )
Out[42]:
0 1
0 validated_name1_conf66.67_err0.00 validated_name2_conf66.67_err0.00
3 Name Name2
4 XYZ ABC
5 XYZ ABC
在上面的方法链接中,我使用转置轴.T
,然后使用.replace
方法将所有-
字符串替换为np.nan
值,然后使用删除它们dropna()
,最后用.T
.
我尝试使用更直接的方式,例如以下结果:
In [43]: _df[_df.values != '-']
Out[43]:
0 1
0 validated_name1_conf66.67_err0.00 validated_name2_conf66.67_err0.00
0 validated_name1_conf66.67_err0.00 validated_name2_conf66.67_err0.00
3 Name Name2
3 Name Name2
4 XYZ ABC
4 XYZ ABC
5 XYZ ABC
5 XYZ ABC
我知道迭代列方法,但就我而言,它并不完全适合我想要实现的目标。
问题
有没有更有效的方法来实现我想要实现的目标,而不是使用我在从顶部开始的第二个代码上使用的方法链接?
解决方案
哦,我想我已经找到了解决方案:
In [ ]: _df[_df.values != '-'].drop_duplicates()
Out[ ]:
0 1
0 validated_name1_conf66.67_err0.00 validated_name2_conf66.67_err0.00
3 Name Name2
4 XYZ ABC
5 XYZ ABC
但是,我不确定这是否是处理此问题的最有效方法,因为数据超过 100k~ish 行。建议将不胜感激!
推荐阅读
- php - 如何使用php将2个不同输入中的2个文件上传到数据库中
- php - Sql error "Syntax error or access violation: 1064"
- python - 100% 的训练和评估准确率,也尝试过梯度裁剪
- linux - Ubuntu 18 中的服务崩溃问题
- .net - WCF 客户端 - 无法为 SSL/TLS 建立安全通道
- python - Django 表单从 request.POST 收到错误的数据
- file-io - 打开文件返回 ErrorKind::Other '错误:Os,代码:20,消息:“不是目录”'
- java - 当更改运行时类型选项未显示时,如何在 google colab 中更改运行时类型?
- java - 当应用程序在 netbeans 中运行时,我可以使内部框架消失吗?(爪哇)
- java - 如何在java中拆分组件的数学表达式?