假设我有一个 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/