df['A to B']=df.groupby('B')['A'].transform(lambda x:x.nunique()==1)
df['A to C']=df.groupby('C')['A'].transform(lambda x:x.nunique()==1)
df['B to C']=df.groupby('C')['B'].transform(lambda x:x.nunique()==1)
输出:
^{pr2}$
要逐列检查:
print (df['A to B']==True).all()
print (df['A to C']==True).all()
print (df['B to C']==True).all()
True
False
False
def isOneToOne(df, col1, col2):
first = df.groupby(col1)[col2].count().max()
second = df.groupby(col2)[col1].count().max()
return first + second == 2
isOneToOne(df, 'A', 'B')
#True
isOneToOne(df, 'A', 'C')
#False
isOneToOne(df, 'B', 'C')
#False
如果您的数据更像这样:
^{pr2}$
然后您可以使用:
def isOneToOne(df, col1, col2):
first = df.drop_duplicates([col1, col2]).groupby(col1)[col2].count().max()
second = df.drop_duplicates([col1, col2]).groupby(col2)[col1].count().max()
return first + second == 2
如果你想要一个正确或错误的答案,应该可以很好地工作。在
用离散/分类值可视化两列之间的关系的一个好方法是:
^{pr2}$此矩阵将告诉您两列中列值之间的对应关系。在
在一对一关系的情况下,矩阵中每行只有一个非零值。在
解决这个问题的方法之一
输出:
^{pr2}$要逐列检查:
那么,您可以创建自己的函数来检查它:
如果您的数据更像这样:
^{pr2}$然后您可以使用:
相关问题 更多 >
编程相关推荐