python - 对于所有列,给定列中的所有行都必须匹配

标签 python pandas

我有一个 Pandas DataFrame 数据,其中给定列中的所有行都必须匹配:

df = pd.DataFrame({'A': [1,1,1,1,1,1,1,1,1,1],
                   'B': [2,2,2,2,2,2,2,2,2,2],
                   'C': [3,3,3,3,3,3,3,3,3,3],
                   'D': [4,4,4,4,4,4,4,4,4,4],
                   'E': [5,5,5,5,5,5,5,5,5,5]})

In [10]: df
Out[10]:
   A  B  C  D  E
0  1  2  3  4  5
1  1  2  3  4  5
2  1  2  3  4  5
...
6  1  2  3  4  5
7  1  2  3  4  5
8  1  2  3  4  5
9  1  2  3  4  5

我想要一种快速了解 DataFrame 中是否存在差异的方法。此时,我不需要知道哪些值发生了变化,因为我稍后会处理这些值。我只需要一种快速的方法来了解 DataFrame 是否需要进一步关注,或者我是否可以忽略它并继续下一个。

我可以使用检查任何给定的列

(df.loc[:,'A'] != df.loc[0,'A']).any()

但我对 Pandas 的了解限制了我对列进行迭代(我知道迭代在 Pandas 中是不受欢迎的)来比较所有列:

   A  B  C  D  E
0  1  2  3  4  5
1  1  2  9  4  5
2  1  2  3  4  5
...
6  1  2  3  4  5
7  1  2  3  4  5
8  1  2  3  4  5
9  1  2  3  4  5

for col in df.columns:
    if (df.loc[:,col] != df.loc[0,col]).any():
        print("Found a fail in col %s" % col)
        break

Out: Found a fail in col C

如果数据框的任何列中的任何行与列中的所有值不匹配,是否有一种优雅的方法返回 bool 值......可能没有迭代?

最佳答案

给定您的示例数据框:

df = pd.DataFrame({'A': [1,1,1,1,1,1,1,1,1,1],
                   'B': [2,2,2,2,2,2,2,2,2,2],
                   'C': [3,3,3,3,3,3,3,3,3,3],
                   'D': [4,4,4,4,4,4,4,4,4,4],
                   'E': [5,5,5,5,5,5,5,5,5,5]})

您可以使用以下内容:

df.apply(pd.Series.nunique) > 1

这给了你:

A    False
B    False
C    False
D    False
E    False
dtype: bool

如果我们然后强制出现几个错误:

df.loc[3, 'C'] = 0
df.loc[5, 'B'] = 20

然后你得到:

A    False
B     True
C     True
D    False
E    False
dtype: bool

关于python - 对于所有列,给定列中的所有行都必须匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38648940/

相关文章:

python - Pandas 在另一个系列的一个系列中找到 super 字符串

python - iter,值,字典中的项目不起作用

python - Pandas 导入错误 : matplotlib is required for plotting

python - 如何使用 ffmpy 从文件中获取元数据

python - Pandas 中的排序函数,返回困惑的数据

python - 具有不同偏移向量的 Pandas 向量化日期偏移操作

python - numpy.mean(X,axis=0) 当二维数组时,否则什么都不做

python - 操作系统错误 : [WinError 193] %1 is not a valid Win32 application

python - 创建相关的 pandas 系列

在 pandas 中绘制毫秒范围