Python 计算包含特定数据组合的唯一项的数量
我使用pandas数据框在一个相当大的csv上提供信息。我想知道有多少唯一ID包含特定的关联。我想找到的东西如下所示。我知道使用pandas可以在一行上完成这项工作,但我无法找出正确的语法组合来获取所需的数据 我已经尝试在数据帧上使用groupby('ID')['Associations'],但我不知道如何给出包含这些组合的ID的数量。例如下面提供的示例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”
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的计数。我想。