gpt4 book ai didi

python - 在每个 pandas 数据框行中查找前 n 个最高值列的名称

转载 作者:太空狗 更新时间:2023-10-29 21:16:33 25 4
gpt4 key购买 nike

我有以下数据框:

  id     p1 p2 p3 p4
1 0 9 1 4
2 0 2 3 4
3 1 3 10 7
4 1 5 3 1
5 2 3 7 10

我需要 reshape 数据框,使每个 ID 的前 3 列具有最高值。结果会是这样的:

 id top1 top2 top3
1 p2 p4 p3
2 p4 p3 p2
3 p3 p4 p2
4 p2 p3 p4/p1
5 p4 p3 p2

它显示每个 user_id 的前 3 名畅销书。我已经使用 R 中的 dplyr 包完成了它,但我正在寻找等效的 pandas。

最佳答案

你可以使用 np.argsort为每行找到 n 个最大项目的索引:

import numpy as np
import pandas as pd

df = pd.DataFrame({'id': [1, 2, 3, 4, 5],
'p1': [0, 0, 1, 1, 2],
'p2': [9, 2, 3, 5, 3],
'p3': [1, 3, 10, 3, 7],
'p4': [4, 4, 7, 1, 10]})
df = df.set_index('id')

nlargest = 3
order = np.argsort(-df.values, axis=1)[:, :nlargest]
result = pd.DataFrame(df.columns[order],
columns=['top{}'.format(i) for i in range(1, nlargest+1)],
index=df.index)

print(result)

产量

   top1 top2 top3
id
1 p2 p4 p3
2 p4 p3 p2
3 p3 p4 p2
4 p2 p3 p1
5 p4 p3 p2

关于python - 在每个 pandas 数据框行中查找前 n 个最高值列的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38955182/

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