确定行的唯一性

2024-09-27 20:19:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫数据帧(截断),如下所示:

                           Name                              Identifiers
419                         Foo  {'VendorName': 'A', 'ProductName': 'Z'}
420                         Foo  {'VendorName': 'A', 'ProductName': 'Z'}
421                         Foo  {'VendorName': 'A', 'ProductName': 'Y'}
422                         Foo  {'VendorName': 'B', 'ProductName': 'X'}
423                         Bar  {'VendorName': 'A', 'ProductName': 'Z'}

使用Pandas,我想计算唯一的NameIdentifiers组合的数量。我有问题,因为Identifiers是一本字典。所有字典都有相同的键,但值明显不同。在上面的例子中,有4种独特的组合。你知道吗


Tags: 数据namepandas数量字典foobar例子
1条回答
网友
1楼 · 发布于 2024-09-27 20:19:14
len(df.groupby(df.Name + df.Identifiers.astype(str)))

它不起任何作用,不管标识符是字典、字符串还是其他什么-groupby只是将相同的元素分组,不管它们是什么类型的元素。你知道吗

更新:。。。前提是对象是可散列的。如果它们不是,例如字典、列表等,则必须首先将它们转换为任何不可变类型。例如str(如上所示,没有100%的保证,因为python3.6的插入顺序是维护的)或者,正如他在上面的评论中提出的hellpanderr,像len(df1.groupby(lambda x: df1.Name[x].__hash__() ^ frozenset(df1.Identifiers[x].items()).__hash__()))

相关问题 更多 >

    热门问题