1
我不确定这是一个错误还是一个功能,但我真的想了解它是如何工作的。熊猫排名与变换('排名')
我有一个非常简单的数据集
In [0]: data
Out[0]:
group value data
0 A 1 1
1 A 2 1
2 B 3 1
3 B 4 1
然后,我有一些转变:
In [1]: data.groupby('group').transform('rank')
Out[1]:
value data
0 1.0 1.5
1 2.0 1.5
2 1.0 1.5
3 2.0 1.5
In [2]: data.groupby('group').value.transform('rank')
Out[2]:
0 1
1 1
2 2
3 2
In [3]: data.groupby('group').data.transform('rank')
Out[3]:
0 1.5
1 1.5
2 1.5
3 1.5
In [4]: data.groupby('group').transform('rank').value
Out[4]:
0 1.0
1 2.0
2 1.0
3 2.0
In [5]: data.groupby('group').value.rank()
Out[5]:
0 1.0
1 2.0
2 1.0
3 2.0
In [6]: data.groupby('group').cumcount()
Out[6]:
0 0
1 1
2 0
3 1
这个事情我觉得奇怪:
- 首届之一。虽然我似乎明白
value
列发生了什么(类似于第5和第6)我不明白data
列发生了什么。1.5
的值从哪里来的? - 第二个。不是只选择指定的列并应用与第1列类似的逻辑,它完全改变了输出。我可以推测现在枚举组而不是组内的行,但我仍然不明白为什么它以这样一种奇怪的方式完成?
- 第三个。它的行为与预期完全一致,因为它只是选择了指定的列并应用了第一个逻辑(与之前的逻辑相反)。但是我仍然错过了这个价值的来源;
- 第四个。这不应该和第二个一样吗?
- 第5个和第6个看起来完全一样,但后一个从0开始。它是正确的吗?
如果有人能向我解释,我将非常感激。
谢谢。
的百分比排位那绝对会让事情变得更加混乱给我。但是我仍然不明白两件事:1)'data'列的计算是如何计算的? 1和1的平均值如何为1.5? 2)为什么它看起来像应用于'value'和'data'列的逻辑不同? –