如果“value_pack”中的每个唯一条目与另一个 value_pack 具有相同的“value”和“discount”,则会发生重复
Value_pack value discount
Val 1 ADA 0
Val 1 ADB 100
Val 2 ADA 0
Val 2 ADB 100
Val 3 ADA 50
Val 3 ADB 40
Val 4 ADA 40
我想对“value_pack”中的每个唯一条目进行分组,并将其与其他所有条目进行比较。 例如,Va1 1 和Val 2 相同。
df.groupby(['Value_pack]) 但我不知道从哪里开始。任何帮助将不胜感激谢谢
输出将是 Val 1, Val 2
答案 0 :(得分:0)
您可以先创建一个临时 DataFrame z
,其中每行是一个值包,每列是所有值的元组:
z = (df
.sort_values(['value', 'discount'])
.groupby('Value_pack', as_index=False)
.agg(tuple))
因此,在我们的示例中,z
是:
Value_pack value discount
0 Val 1 (ADA, ADB) (0, 100)
1 Val 2 (ADA, ADB) (0, 100)
2 Val 3 (ADA, ADB) (50, 40)
3 Val 4 (ADA,) (40,)
然后在 z
上将 ['value', 'discount']
合并到自身,并在 Value_pack_x < Value_pack_y
处获取记录(因为它是对称的,并且您不想拥有 Val1 - Val2
和 {{1 }}):
Val2 - Val1
输出:
(z
.merge(z, on=['value', 'discount'])
.drop(columns=['value', 'discount'])
.query('Value_pack_x < Value_pack_y'))