python - 在熊猫数据框中按条件过滤 nans
问题描述
我有一个这样的数据框:
COL1 COL2
0 1 2
1 1 NaN
2 2 6
3 2 8
4 3 10
5 3 NaN
6. 4 NaN
如您所见,Col1 中有重复值,我想要一个像这样的数据框:
COL1 COL2
0 1 2
1 2 6
2 2 8
3 3 10
4 4 NaN
基本上,如果 col1 中的相同值在 col2 中具有 nan 值,那么我想删除具有 NaN 值的行。但是,如果这是 Col2 中唯一可用于 Col1 中的值的值,我不会尝试将 NaN 值一起移动
因此,我知道我不能使用它:
new_table = old_table[~old_table['COL2'].isna())
因为这会删除所有NaN
不一定是我正在寻找的值
解决方案
您可以pandas.DataFrame.duplicated
使用pandas.DataFrame.isna
:
>>> df[~(df.COL1.duplicated(keep=False) & df.COL2.isna())]
COL1 COL2
0 1 2.0
2 2 6.0
3 2 8.0
4 3 10.0
6 4 NaN
推荐阅读
- arrays - Perl 中的数组问题
- r - 如何用 R 为卡片的多边形的一部分着色?
- node.js - 在 Azure Web 应用程序中使用 html-pdf 节点包和 Microsoft.AspNetCore.NodeServices 创建 pdf 时出错
- c# - 如何在 C# 中简化 TreeView 列表的输出?
- git - 无法从放置在管道阶段的脚本运行 git clone
- mysql - 我想从子查询的结果中计算男性和女性的总数。有没有mysql查询
- node.js - fs.createWriteStream 重新启动在 PM2 上运行的应用程序
- java - 作业帮助 - Java 继承和 Getters/Setters
- asp.net-core - 如何在自定义组件 Blazor 上使用绑定值和绑定值:事件
- c++ - C++ 代码的分段错误(核心转储)