以 PEP8 方式检查 pandas 重复项
Check for pandas duplicates in a PEP8 way
我能想到的检查 pandas 数据框中的重复项的最简单方法如下:
if (df["col1"].value_counts() > 1).sum() > 0:
raise ValueError("dupes in column 'col1'!")
问题是这不符合 PEP8 标准。我的 IDE(我使用 PyCharm)中的代码检查器告诉我:
Unresolved attribute reference 'sum' for class 'bool'
在不添加多行代码的情况下检查 pandas 重复项的可接受方法是什么?
这与 PEP8 合规性无关,但您可能正在寻找的是:
if (df.col1.value_counts() > 1).any():
raise ValueError("dupes in column 'col1'!")
请注意,这会忽略 None
/NaN
/NaT
值,即您不会使用此方法找到重复的 na
。如果需要,请将 dropna=False
添加到 value_counts
调用中。
但是请注意,这不是最快的方法。一个更快的测试是,例如:
if len(set(df.col1.values)) != len(df.col1):
...
您的错误与 PEP8 无关。事实上,您的错误似乎是误报:您的 IDE 似乎是 猜测 比较运算的结果是布尔值,因此没有 sum
或 any
方法。
但是您的语法没有任何问题:df["col1"].value_counts() > 1
returns 一个布尔 pd.Series
对象,它确实有 sum
和 any
方法。
我可以建议的唯一解决方案是使用另一个 IDE。或者禁用您的代码检查器。
我能想到的检查 pandas 数据框中的重复项的最简单方法如下:
if (df["col1"].value_counts() > 1).sum() > 0:
raise ValueError("dupes in column 'col1'!")
问题是这不符合 PEP8 标准。我的 IDE(我使用 PyCharm)中的代码检查器告诉我:
Unresolved attribute reference 'sum' for class 'bool'
在不添加多行代码的情况下检查 pandas 重复项的可接受方法是什么?
这与 PEP8 合规性无关,但您可能正在寻找的是:
if (df.col1.value_counts() > 1).any():
raise ValueError("dupes in column 'col1'!")
请注意,这会忽略 None
/NaN
/NaT
值,即您不会使用此方法找到重复的 na
。如果需要,请将 dropna=False
添加到 value_counts
调用中。
但是请注意,这不是最快的方法。一个更快的测试是,例如:
if len(set(df.col1.values)) != len(df.col1):
...
您的错误与 PEP8 无关。事实上,您的错误似乎是误报:您的 IDE 似乎是 猜测 比较运算的结果是布尔值,因此没有 sum
或 any
方法。
但是您的语法没有任何问题:df["col1"].value_counts() > 1
returns 一个布尔 pd.Series
对象,它确实有 sum
和 any
方法。
我可以建议的唯一解决方案是使用另一个 IDE。或者禁用您的代码检查器。