gpt4 book ai didi

python - 获取 Pandas 数据框中列名的排名

转载 作者:行者123 更新时间:2023-12-03 15:34:46 26 4
gpt4 key购买 nike

我已经将客户 ID 与他们最常购买的表演类型进行了对比:

Genre            Jazz     Dance     Music  Theatre
Customer
100000000001 0 3 1 2
100000000002 0 1 6 2
100000000003 0 3 13 4
100000000004 0 5 4 1
100000000005 1 10 16 14
我想要的结果是根据排名附加列名:
Genre            Jazz     Dance     Music  Theatre          Rank1          Rank2          Rank3          Rank4
Customer
100000000001 0 3 1 2 Dance Theatre Music Jazz
100000000002 0 1 6 2 Music Theatre Dance Jazz
100000000003 0 3 13 4 Music Theatre Dance Jazz
100000000004 0 5 4 1 Dance Music Theatre Jazz
100000000005 1 10 16 14 Music Theatre Dance Jazz
我查了一些线索,但我能找到的最接近的是 idxmax .然而,这只给了我 Rank1 .
谁能帮我得到我需要的结果?
非常感谢!
丹尼斯

最佳答案

使用:

i = np.argsort(df.to_numpy() * -1, axis=1)
r = pd.DataFrame(df.columns[i], index=df.index, columns=range(1, i.shape[1] + 1))
df = df.join(r.add_prefix('Rank'))
详情:
使用 np.argsort 沿 axis=1获取索引 i这将按降序对流派进行排序。
print(i)
array([[1, 3, 2, 0],
[2, 3, 1, 0],
[2, 3, 1, 0],
[1, 2, 3, 0],
[2, 3, 1, 0]])
创建一个新的数据框 r来自数据框的列 df沿着指数 i (即 df.columns[i] ),然后使用 DataFrame.join 加入数据框 rdf :
print(df)
Jazz Dance Music Theatre Rank1 Rank2 Rank3 Rank4
Customer
100000000001 0 3 1 2 Dance Theatre Music Jazz
100000000002 0 1 6 2 Music Theatre Dance Jazz
100000000003 0 3 13 4 Music Theatre Dance Jazz
100000000004 0 5 4 1 Dance Music Theatre Jazz
100000000005 1 10 16 14 Music Theatre Dance Jazz

关于python - 获取 Pandas 数据框中列名的排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63343230/

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