python - panda栏修改面临的问题

标签 python pandas

我面临着一个奇怪的场景。 我有一个数据框,其中唯一行的 3 个最大分数如下:

id   rid   code  score
1    9    67    43
1    8    87    22 
1    4    32    20
2    3    56    43
3    10.  22    100
3.   5    67.    50

这里 id 列相同,但行方向不同。
我想让我的数据框像这样:

id   first_code  second_code    third_code
1     67          87            32
2.    56.         none.         none
3     22.         67.           none

所以我制作了显示最高分前 3 名的数据框。如果没有前 3 个值,我将取前 2 个值或唯一的值,即分数。因此,根据分数值,我想将代码列重新排列为三个不同的列,例如first_code代表最高分数,second_score代表第二高值,third_code代表第三高值。如果没有找到,那么我会将这些空白。

请帮我解决这个问题。

最佳答案

使用GroupBy.cumcount对于计数器,创建 MultiIndex 并按 Series.unstack reshape 形状:

df = df.set_index(['id',df.groupby('id').cumcount()])['code'].unstack()
df.columns=['first_code', 'second_code', 'third_code']
df = df.reset_index()
print (df)
    id  first_code  second_code  third_code
0  1.0        67.0         87.0        32.0
1  2.0        56.0          NaN         NaN
2  3.0        22.0         67.0         NaN

顺便说一句,cumcount 也应该在之前的代码中用于过滤器 top3 值。

关于python - panda栏修改面临的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62080329/

相关文章:

python - NCBIblastP 命令行错误

python - 如何从 python panda 数据框中删除不需要的数据?

python - 如果某个值位于某个区间之间,请选择另一列中同一行的值

python - 为什么python纽约时区显示4 :56 instead 4:00?

python - 如何在python中分离指数函数

python - 如何在数据框中集成字典列表?

python - 无法使用 file.write 将数据帧写入 python 中的 .csv 文件

python - 如何使用 Python 输出嵌套循环的结果

python - 颜色条使子图的大小比其余部分更小

python - 如何在其构造函数中使用额外参数正确初始化 dict 的子类?