我有一个像这样的数据集:
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)
这里,a1
、t1
、r1
总是与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_duplicates
idx
+value
的组合。如果每个value
只有一个idx
,那么结果应该包含与value
列中唯一值的数量相同的记录数:
len(df[['idx', 'value']].drop_duplicates()) == df['value'].nunique()
# True