首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查看潘达斯中的两列是否为一对一的简单方法

查看潘达斯中的两列是否为一对一的简单方法
EN

Stack Overflow用户
提问于 2018-06-01 12:25:15
回答 5查看 7.2K关注 0票数 11

使用Python 3+处理熊猫的数据。似乎应该有一种简单的方法来检查两列是否具有一对一的关系(不管列类型如何),但我很难找到最好的方法来做到这一点。

预期产出实例:

代码语言:javascript
运行
复制
A    B     C
0    'a'   'apple'
1    'b'   'banana'
2    'c'   'apple'

A&B是一对一吗?真的

A&C是一对一吗?错误

B&C是一对一吗?错误

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-06-01 12:38:39

那么,您可以创建自己的函数来检查它:

代码语言:javascript
运行
复制
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

如果您的数据更像这样的话:

代码语言:javascript
运行
复制
df = pd.DataFrame({'A': [0, 1, 2, 0],
                   'C': ["'apple'", "'banana'", "'apple'", "'apple'"],
                   'B': ["'a'", "'b'", "'c'", "'a'"]})
df
#   A    B         C
#0  0  'a'   'apple'
#1  1  'b'  'banana'
#2  2  'c'   'apple'
#3  0  'a'   'apple'

然后你可以使用:

代码语言:javascript
运行
复制
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
票数 10
EN

Stack Overflow用户

发布于 2018-11-30 04:34:28

代码语言:javascript
运行
复制
df.groupby(col1)[col2]\
  .apply(lambda x: x.nunique() == 1)\
  .all()

如果你想要一个正确或错误的答案的话,应该工作得很好。

用离散/分类值(万一您正在使用木星笔记本)可视化两列之间的关系的一个好方法是:

代码语言:javascript
运行
复制
df.groupby([col1, col2])\
  .apply(lambda x : x.count())\
  .iloc[:,0]\
  .unstack()\
  .fillna(0)

此矩阵将告诉您两列中列值之间的对应关系。

在一对一关系的情况下,矩阵中每行只有一个非零值。

票数 7
EN

Stack Overflow用户

发布于 2020-10-12 02:37:03

代码语言:javascript
运行
复制
df.groupby('A').B.nunique().max()==1 #Output: True

df.groupby('B').C.nunique().max()==1 #Output: False

在groupby列中的每个值中,计算其他列中唯一值的数目,然后检查所有此类计数的最大值为1。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50643386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档