print (df)
Segmentation 2019 Segmentation 2020
0 B VIP
1 B A
2 A B
3 C C
4 B D
classes = ['VIP','A','B','C','D']
df['Segmentation 2020'] = pd.Categorical(df['Segmentation 2020'],
ordered=True,
categories=classes)
df['Segmentation 2019'] = pd.Categorical(df['Segmentation 2019'],
ordered=True,
categories=classes)
mask = df['Segmentation 2019'].eq(df['Segmentation 2020'])
s = df[['Segmentation 2019','Segmentation 2020']].stack().min(level=0)
df['new'] = np.where(mask, 'Equal', s)
print (df)
Segmentation 2019 Segmentation 2020 new
0 B VIP VIP
1 B A A
2 A B A
3 C C Equal
4 B D B
您可以从“类”列表创建一个字典,其中key是类,value是索引(它用作秩,因为列表从大到小)
然后您可以创建两个列组列,其中包含列组(0到n0更大)。最后,比较等级,取等级较高的等级(即值较小的等级)
输出:
如果您添加了一个新类(VIP),您只需将其添加到a之前的列表中,它将被视为一个更大的类
在两列之间使用ordered categoricals和^{} 表示get
Equal
或minimal的解决方案:或使用^{} 的解决方案:
相关问题 更多 >
编程相关推荐