我希望能够检查一列在其他列中是否始终具有唯一的集合。例如,在此数据框中,我想测试 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/