python-3.x 如何在有重复的两列之间找到一对一的关系?

ss2ws0br  于 2022-12-05  发布在  Python
关注(0)|答案(1)|浏览(128)

我有一个数据集,如下所示:
进口Pandas作为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,即使a1t1r1总是与1一起出现,其他人也是如此。如何验证,例如a1只与idx = 1一起出现?

d4so4syb

d4so4syb1#

您可以只使用基于drop_duplicatesidx + value组合。如果每个value只有一个idx,则结果中包含的记录数应与value列中唯一值的数目相同:

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

相关问题