Python Pandas groupby、排名,然后根据自定义排名分配值

2024-05-08

问题设置

大熊猫数据框

df = pd.DataFrame({'Group': ['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A'], 'Subgroup': ['Group 1', 'Group 1', 'Group 1', 'Group 1', 'Group 1', 'Group 1', 'Group 2', 'Group 2', 'Group 2'], 'Keyword': ['kw 1', 'kw 1', 'kw 1', 'kw 2', '+kw +2', 'kw 2', 'kw 3', 'kw 3', 'kw 3'], 'Normalized': ['kw 1', 'kw 1', 'kw 1', 'kw 2', 'kw 2', 'kw 2', 'kw 3', 'kw 3', 'kw 3'], 'Criterion Type': ['Exact', 'Phrase', 'Broad', 'Phrase', 'Broadified', 'Exact', 'Broad', 'Exact', 'Phrase'], 'Max CPC': [1.62, 1.73, 0.87, 1.70, 0.85, 1.60, 0.99, 1.58, 1.68], 'CPC Rank': [2, 1, 3, 1, 3, 2, 3, 2, 1], 'Type Rank': [1, 2, 3, 2, 3, 1, 3, 1, 2]})

这是为了让列位于正确的位置:

df = df[['Group', 'Subgroup', 'Keyword', 'Normalized', 'Criterion Type', 'Max CPC', 'CPC Rank', 'Type Rank']]

The goal

groupby ['Group', 'Subgroup', 'Normalized'], then rank the Max CPCs。接下来,我想绘制地图Max CPC相关于CPC Rank to the Type Rank这是根据确定的Criterion Type和我自己的自定义排名:{'Exact':1, 'Phrase':2, 'Broadified':3, 'Broad':4}

结果将是New CPC列及其适当的Max CPC.


我已经对每个组内的值进行了排序,并使用索引分配了排序后的值。 这是你想要的吗?

df['new CPC'] = -1
parts = []
grouped = df.groupby(['Group', 'Subgroup', 'Normalized'])
for name, group in grouped:
    type_rank_index = group.sort(columns='Type Rank').index
    cpc_rank_index = group.sort(columns='CPC Rank').index
    group.loc[type_rank_index, 'new CPC'] = group.loc[cpc_rank_index, 'Max CPC']
    parts.append(group)

result = pd.concat(parts)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python Pandas groupby、排名,然后根据自定义排名分配值 的相关文章

随机推荐