Python 基于三个不同列合并并添加签名的独特元素
我有一个如下所示的数据帧。我想得到结合三列值的行的唯一发生率,然后添加第四列,这是三列的散列,使用pandas并匹配下面的类型 以下是数据集: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
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,这对事件有效。如何合并类似行的“模型”并只列出给定的类型?删除重复项似乎只删除所有与行匹配的项。