python - 根据其他列值的组合检查唯一列值

标签 python pandas dataframe

我希望能够检查一列在其他列中是否始终具有唯一的集合。例如,在此数据框中,我想测试 Orange 在 stale 和 stock 中的值是否始终为 yes、yes,而 apple 的值是否始终为 yes、no。请告诉我如何对较大的数据框执行此操作,以便检查一个卷是否映射为另外两列的唯一组合。

type    stale    stock      
orange    yes     yes    
apple     yes     no     
orange    yes     yes

最佳答案

您可以使用drop_duplicates要从 df 中删除所有重复行(基于相关列),然后使用 groupby类型并检查 size() 是否等于 1

试试这个:

print(df.drop_duplicates(['type', 'stale', 'stock']).groupby('type').size().eq(1))

输出:

type
apple     True
orange    True
dtype: bool

这是一个更大的示例,其中一些值也没有唯一的集合:

import pandas as pd
from io import StringIO

s = """
type    stale    stock      
orange    yes     yes    
apple     yes     no     
orange    yes     yes
orange    yes     yes
banana    yes     yes
banana    yes     no
peach     no      no
peach     yes     no
"""

df = pd.read_csv(StringIO(s), sep="\s+")

print(df.drop_duplicates(['type', 'stale', 'stock']).groupby('type').size().eq(1))

输出:

type
apple      True
banana    False
orange     True
peach     False
dtype: bool

关于python - 根据其他列值的组合检查唯一列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57205051/

相关文章:

python - 在 Fabric 中使用网关时如何指定 pem 文件路径

python - 按周和 ID 分组、求平均值、再次按周分组并绘图

python - Pandas:计算给定时间范围内每个唯一元素 ('ID' )的值总和,然后计算所有 'ID' 的中位数

python - 如何获得一维数据框中行范围的局部最大值?

python - 仅当同一行中的其他值为 True 时才添加 pandas 数据帧中的值

python - Pandas :如何设置标签列的最后一行值?

python - 如何卸载使用 pip install --user 安装的软件包

python - 为什么这个函数与 min 一起工作,而不是没有?

python - pandas read_csv 忽略每个值前面的列索引

python - 如何用行中的前一个可用值填充 nan 值?