如何找到具有重复项的两列之间的一对一关系?



我有一个像这样的数据集:

import pandas as pd

dict1 = {
"idx": [1, 2, 9, 1, 1, 6, 1, 3, 2],
"value": ["a1", "b1", "c1", "t1", "t1", "f1", "r1", "l1", "b1"]
}
df = pd.DataFrame(dict1)

这里,a1t1r1总是与1一起出现。为了验证这一点,我使用了以下代码

def one_to_one(df, col1, col2):
first = df.groupby(col1)[col2].count().max()
second = df.groupby(col2)[col1].count().max()
return first + second == 2
one_to_one(df, 'idx', 'value')

但是它返回None,即使a1,t1,r1总是与1一起出现,其他的也一样。如何验证,例如a1,只出现在idx=1?

你可以只是基于drop_duplicatesidx+value的组合。如果每个value只有一个idx,那么结果应该包含与value列中唯一值的数量相同的记录数:

len(df[['idx', 'value']].drop_duplicates()) == df['value'].nunique()
# True

最新更新