如何有条件地从熊猫数据框中删除重复项

如何有条件地从熊猫数据框中删除重复项,第1张

如何有条件地从熊猫数据框中删除重复项

这是一个替代方案:

df[~((df[['A', 'B']].duplicated(keep=False)) & (df.isnull().any(axis=1)))]#    A  B Col_1  Col_2# 0  1  a   NaN      2# 1  2  b     A      2# 2  3  c     A      3# 4  4  d     B      3# 6  5  e     B      4# 7  6  f   NaN      4# 8  7  g   NaN      5

这使用按位“非”运算符

~
来消除满足作为重复行的联合条件的行(该参数
keep=False
使该方法对所有非唯一行的结果都为True),并且至少包含一个null值。因此表达式
df[['A','B']].duplicated(keep=False)
返回此Series的位置:

# 0    False# 1    False# 2     True# 3     True# 4     True# 5     True# 6    False# 7    False# 8    False

…表达式

df.isnull().any(axis=1)
返回该Series:

# 0     True# 1    False# 2    False# 3     True# 4    False# 5     True# 6    False# 7     True# 8     True

…我们将两者都包装在括号中(在索引 *** 作中使用多个表达式时,Pandas语法都需要),然后 再次 将其包装在括号中
以便我们可以否定整个表达式(即

~( ... )
),如下所示:

~((df[['A','B']].duplicated(keep=False)) & (df.isnull().any(axis=1))) & (df['Col_2'] != 5)# 0     True# 1     True# 2     True# 3    False# 4     True# 5    False# 6     True# 7     True# 8    False

您可以通过进一步使用逻辑运算符

&
|
(或“或”运算符)来建立更复杂的条件。与SQL一样,根据需要用附加括号将条件分组。例如,使用基于逻辑“
条件X条件Y 都为真,或 条件Z 为真”的过滤器
df[ ( (X) & (Y) ) | (Z) ]



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5674939.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存