基于criteri的Pandas数据帧排序

2024-04-20 08:10:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个pandas数据帧,其结构如下:

data = DataFrame({'Cat1':['A', 'B', 'B', 'C'], 'Cat2': ['X', 'Y', 'Z', 'X'], 'Counter': [0, 4, 1, 5]})

现在,我想添加一个单独的列,该列按Cat1排序(因此在本例中:1,3,2,4作为新列)。我的第一次尝试是:

^{pr2}$

但是,当我添加第二个类别(data['Cat1']=='B'作为条件),它会覆盖现有的值。这就是我所期望的,因为据我所知,我必须使用.add()。但是,以下脚本也会发生同样的情况:

data['ranking'].add(data[data['Cat1']=='A']['Counter'].rank(ascending=0))

也用catb=1覆盖NA=1。我怎样才能避免这种情况?在

提前谢谢!在

--------------------------编辑!!-------------------

假设这是我的桌子:

enter image description here

普通的排名会给我一个从1到12的所有数字的排名。现在我需要的是一个基于类别的排名,并作为原始python数据帧中的一个附加列。在

因此,最后一列应该是: 2(a值排名第二) 3(a的第三位值) 1(a的排名第一) 1(b的第一位值) 1(c值排名第一) 5 2 ... 在


Tags: 数据adddataframepandasdata排序counter情况
1条回答
网友
1楼 · 发布于 2024-04-20 08:10:25

我不确定我是否理解你的问题,也许下面这个问题行得通?在

data['Cat1'][data['Counter'].rank(ascending=0) - 1]

编辑

在评论中,我的解决方案是

^{pr2}$

我想不出别的了,对不起。也许其他人会有不同的看法。。在

相关问题 更多 >