python - 验证 Pandas 数据框中的行在列中的值之间是否相等

标签 python pandas dataframe validation

假设我有一个 Pandas DataFrame,如下所示:

   C30    C25    C20    C15    C10
1  AJA    EJE    IJI    OJO    UJU
2  AJA    EJE    IJI    OJO    UJU
3  AJA    EJE    IJI    OJO    UJU
4  ABA    EBE    IBI    OBO    UBU
5  ABA    EBE    IBI    OBO    UBU
6  ABA    EBE    IBI    OBO    UNU
7  BOB    BIB    BEB    BAB    BUB
我想验证在 C30 中具有相等值的所有行在 C25、C20、C15 和 C10 中也具有相等的值。
我有大约 60,000 行,列值有很多变化,如果列 C30 中的元素相等,那么相应的列 C25 元素也应该相等,依此类推。
例如,验证应该显示不匹配,因为第 6 行中的 C10 值不等于 4 & 5 行。执行此操作的最有效方法是什么?

最佳答案

您可以使用 DataFrameGroupBy.nunique 并比较不相等 1来自 DataFrame.ne :

m = df.groupby('C30').nunique().ne(1)
print (m)
       C25    C20    C15    C10
C30                            
ABA  False  False  False   True
AJA  False  False  False  False
BOB  False  False  False  False
然后如果需要值,如果没有匹配使用 np.where :
i, c  = np.where(m)

L = list(zip(m.index[i], m.columns[c]))

if len(L) > 0:
    print ('mismatch')
    print (L)
mismatch
[('ABA', 'C10')]
    

关于python - 验证 Pandas 数据框中的行在列中的值之间是否相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66899838/

相关文章:

r - 如何将类别分配给 R 中的列,以便可以对每行对这些类别中的值进行求和?

python - 获取 B 列中 A 列中找到的字符串数,并在新列中返回值

python - 如何通过 unittest setUp 在 python 中正确使用 mock

python - 在 Python 中返回当前的 11 位数字时间戳

javascript - 使用 AWS Lambda 进行网页抓取

python - Python AST 中的 Expr 是什么?

python - 类型错误 : unhashable type: 'dict' when using pandas Multi Index

python - pandas:基于 NaN 的切片数据帧

python - 如何在 Python 中为数据透视表填充缺失的多列和多行?

python - Python按列合并不同大小的表