不是一个通用的解决方案,但它应该让您知道如何解决它:使用一些函数来“规范化”您的 sku1_entity 列并像这样对这些规范化值进行分组:
df = pd.DataFrame( {'sku1_entity': ['4 Cheese W Verm','4 Cheese w Verm','4Cheese w Verm', 'something else'], '0.0': [6,55,3,1], '1.0': [0,5,1,0]})
df = df.set_index('sku1_entity')
df['All'] = df['0.0'] + df['1.0']
def grouper(x):
return ''.join(x.lower().split())
df.groupby(grouper).sum()
结果:
0.0 1.0 All
4cheesewverm 64 6 70
somethingelse 1 0 1
作为替代方案,您当然可以在首先创建数据透视表之前“规范化”列。
如果你想保留原来的
sku1_entity 名字,你可以这样做:
df = pd.DataFrame( {'sku1_entity': ['4 Cheese W Verm','4 Cheese w Verm','4Cheese w Verm', 'something else'], '0.0': [6,55,3,1], '1.0': [0,5,1,0]})
df['sku1_entity_norm'] = df['sku1_entity'].str.lower().str.split().map(''.join)
df.groupby('sku1_entity_norm').agg({'sku1_entity': list, '0.0': sum, '1.0': sum})
结果:
sku1_entity 0.0 1.0
sku1_entity_norm
4cheesewverm [4 Cheese W Verm, 4 Cheese w Verm, 4Cheese w Verm] 64 6
somethingelse [something else] 1 0