Python 计算包含特定数据组合的唯一项的数量

Python 计算包含特定数据组合的唯一项的数量,python,pandas,dataframe,Python,Pandas,Dataframe,我使用pandas数据框在一个相当大的csv上提供信息。我想知道有多少唯一ID包含特定的关联。我想找到的东西如下所示。我知道使用pandas可以在一行上完成这项工作,但我无法找出正确的语法组合来获取所需的数据 我已经尝试在数据帧上使用groupby('ID')['Associations'],但我不知道如何给出包含这些组合的ID的数量。例如下面提供的示例 csv=pd.read\u csv('export.csv',delimiter=“,”) 打印(csv) 身份证协会 1“AA” 1“BB”

我使用pandas数据框在一个相当大的csv上提供信息。我想知道有多少唯一ID包含特定的关联。我想找到的东西如下所示。我知道使用pandas可以在一行上完成这项工作,但我无法找出正确的语法组合来获取所需的数据

我已经尝试在数据帧上使用groupby('ID')['Associations'],但我不知道如何给出包含这些组合的ID的数量。例如下面提供的示例

csv=pd.read\u csv('export.csv',delimiter=“,”)
打印(csv)
身份证协会
1“AA”
1“BB”
1“CC”
2“AA”
3“BB”
4“CC”
5“AA”
5“BB”
6“AA”
6“CC”
7“CC”
7“BB”
7“AA”
因此,当我寻找特定的组合时,例如[“AA”,“BB”,“CC”]或[“AA,CC”],它会给我一些计数,例如

给出_计数([“AA”、“BB”、“CC”])
>> 2
#因为ID 1和7有“AA”、“BB”和“CC”
给出_计数([“AA,CC”])
>> 3 
#因为ID 1、6和7有“AA”和“CC”
给出_计数([“AA”])
>> 5
#因为ID 1、2、5、6和7有“AA”
因此,基本上,我在寻找有多少唯一ID与该数据组合相关联。我知道这涉及到使用groupby(),但我不知道如何从这里开始

提前感谢您

  • 这是你可以走的一条路
  • 第一组按
    ID
    聚合
    关联
  • 首先排序,然后合并此关联进行计数
  • value\u counts
    提供每个组合的计数
输出:

AABBCC    2
AACC      1
Name: Associations, dtype: int64
5
3
2
  • 您还可以从此列表中检索哪个组合的
    ID
您可以尝试以下方法:

def give_count(lst):
    return df.groupby('ID')['Associations'].apply(lambda x: all((x == i).any() for i in lst)).sum()

print(give_count(['"AA"']))
print(give_count(['"AA"','"CC"']))
print(give_count(['"AA"','"BB"','"CC"']))
输出:

AABBCC    2
AACC      1
Name: Associations, dtype: int64
5
3
2

嗨,我想这正是我想要的。如果数据集在数十万行中,是否有这样做的方法?我正在使用的csv有288000行长,有数千个唯一ID和几十个唯一关联HRM。。。我知道没有一种方法。不过,我相信这可以用numpy优化。我想这将是我的下一个问题,我将如何在numpy中做到这一点?还有一个问题是,这是否会将增加一倍的东西计算在内。比如,如果ID#1有“AA”、“BB”和“AA”,并且我运行了一个give#u count(“AA”),那么ID#1仍然只能算1,还是只能算2?非常感谢您迄今为止的帮助。如果“AA”出现两次,此答案在ID中仍应仅给出1的计数。我想。