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'列的邏輯不同? –