以PEP8方式检查pandas重复

时间:2018-06-05 23:03:57

标签: python pandas pycharm pep8

我能想到检查pandas数据帧中重复项的最简单方法如下:

if (df["col1"].value_counts() > 1).sum() > 0:
    raise ValueError("dupes in column 'col1'!")

问题是这不符合PEP8。我的IDE中的代码检查器(我使用PyCharm)告诉我:

  

未解析的属性引用' sum'为了班级' bool'

检查pandas重复项的可接受方法是什么,而不添加多行代码?

2 个答案:

答案 0 :(得分:3)

您的错误与PEP8无关。实际上,您的错误似乎是误报:您的IDE似乎猜测比较操作的结果是布尔值,因此没有sumany方法

但您的语法没有任何问题:df["col1"].value_counts() > 1返回一个布尔pd.Series对象,该对象有sumany方法。

我建议的唯一解决方案是使用另一个IDE。或者禁用您的代码检查程序。

答案 1 :(得分:1)

这与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):
    ...