gpt4 book ai didi

python - 遍历 pandas 中的组以提取顶部

转载 作者:行者123 更新时间:2023-12-04 15:29:26 25 4
gpt4 key购买 nike

我有这样一个数据框

df = pd.DataFrame({'Client': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'C', 'C'],
'Project': ['P1', 'P2', 'P3', 'P4', 'P2', 'P3', 'P1', 'P2', 'P4'],
'Freq': [5, 2, 3, 4, 6, 9, 7, 2, 4]})

Client Project Freq
0 A P1 5
1 A P2 2
2 A P3 3
3 A P4 4
4 B P2 6
5 B P3 9
6 B P1 7
7 C P2 2
8 C P4 4

我想实现这一目标:

  Client Project Top 1 Project Top 2 Project Top 3
0 A P1 P4 P3
1 B P3 P1 P2
2 C P4 P2 -

但我不知道如何在组中操作和提取每个顶级项目。

希望你能帮帮我,谢谢。

最佳答案

第一次使用DataFrame.sort_values按两列,按 Freq 降序。然后通过 GroupBy.cumcount 创建计数器, 按最高值过滤并按 Series.unstack reshape :

N = 3 
df = df.sort_values(['Client','Freq'], ascending=[True, False])
g = df.groupby('Client').cumcount().add(1)
mask = g <= N
df = (df[mask].set_index(['Client',g[mask]])['Project']
.unstack()
.add_prefix('Project Top ')
.reset_index())
print (df)
Client Project Top 1 Project Top 2 Project Top 3
0 A P1 P4 P3
1 B P3 P1 P2
2 C P4 P2 NaN

关于python - 遍历 pandas 中的组以提取顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61541141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com