我不确定这是一个错误还是一个特性,但我真的想了解它的工作原理。
我有一个非常简单的数据集。
我发现以下几点很奇怪:
我有一个非常简单的数据集。
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
列(类似于第五和第六列)发生了什么,但是我不明白data
列中的值1.5
从哪里来的? - 第二点。它不仅选择了指定的列,并应用了类似于第一点的逻辑,而且完全改变了输出。我可以推测现在是在枚举组而不是组内行,但我仍然不明白为什么要这样做?
- 第三点。它的表现与预期完全一致,只选择了指定的列,并应用了第一点相同的逻辑(与前一个相比)。但我仍然不知道这个值的来源;
- 第四点。这不应该与第二点相同吗?
- 第五和第六点看起来完全相同,但后者从0开始。这正确吗?
如果有人能够解释一下,我将非常感激。
谢谢。