Python 基于三个不同列合并并添加签名的独特元素

Python 基于三个不同列合并并添加签名的独特元素,python,pandas,statistics,pandas-groupby,Python,Pandas,Statistics,Pandas Groupby,我有一个如下所示的数据帧。我想得到结合三列值的行的唯一发生率,然后添加第四列,这是三列的散列,使用pandas并匹配下面的类型 以下是数据集: Type LocationA LocationB LocationC Model Pipes Baltimore Stanford Vienna C22 Pipes Baltimore Vienna Stanford B22 Pipes Baltimore Barcelona London B22

我有一个如下所示的数据帧。我想得到结合三列值的行的唯一发生率,然后添加第四列,这是三列的散列,使用pandas并匹配下面的类型

以下是数据集:

Type   LocationA  LocationB  LocationC  Model
Pipes  Baltimore  Stanford   Vienna     C22
Pipes  Baltimore  Vienna     Stanford   B22
Pipes  Baltimore  Barcelona  London     B22
Tyres  Sao Paolo  Cartagena  Maldives   X23
Pipes  Baltimore  Stanford   Vienna     C22
Pipes  Baltimore  Stanford   Vienna     Y78
Pipes  Baltimore  Stanford   Vienna     NH9

因此,如果我筛选与“管道”匹配的类型,我应该得到如下所示的唯一元素:

Type   LocationA  LocationB  LocationC Occurances   Model             Hash(signature)
Pipes  Baltimore  Stanford   Vienna    4            C22,Y78,NH8        f7c360dd7eb4f723a4af838e871f8225
Pipes  Baltimore  Vienna     Stanford  1            B22                0cfe49c08b63158a880d6273ee6cb067  
Pipes  Baltimore  Barcelona  London    1            B22                94c76fd213b5105c59bbb6d34a18079c

我使用的散列是三列的简单md5散列。
我应该使用groupby和unique吗?或者在某些条件匹配中是唯一的?

您可以使用
transform
方法对相同的行进行计数:


df['occurrences']=df.drop(columns=['Model']).groupby(['Type','LocationA','LocationB','LocationC'])['Type'].transform('count')
您可以使用
transform
方法对相同的行进行计数:


df['occurrences']=df.drop(columns=['Model']).groupby(['Type','LocationA','LocationB','LocationC'])['Type'])。transform('count')

谢谢Tim,这对occurrences有效。如何合并类似行的“模型”并只列出给定的类型?删除重复项似乎只删除所有行匹配项。谢谢Tim,这对事件有效。如何合并类似行的“模型”并只列出给定的类型?删除重复项似乎只删除所有与行匹配的项。