我有一個數據幀:如何標記熊貓中的重複組?
>>> df
A
0 foo
1 bar
2 foo
3 baz
4 foo
5 bar
我需要找到所有重複的組,並連續dgroup_id
的標號:
>>> df
A dgroup_id
0 foo 1
1 bar 2
2 foo 1
3 baz
4 foo 1
5 bar 2
(這意味着foo
屬於第一組重複的,bar
到第二組重複項,並且baz
不重複。)
我這樣做了:
import pandas as pd
df = pd.DataFrame({'A': ('foo', 'bar', 'foo', 'baz', 'foo', 'bar')})
duplicates = df.groupby('A').size()
duplicates = duplicates[duplicates>1]
# Yes, this is ugly, but I didn't know how to do it otherwise:
duplicates[duplicates.reset_index().index] = duplicates.reset_index().index
df.insert(1, 'dgroup_id', df['A'].map(duplicates))
這導致:
>>> df
A dgroup_id
0 foo 1.0
1 bar 0.0
2 foo 1.0
3 baz NaN
4 foo 1.0
5 bar 0.0
有沒有更簡單/更短的方式熊貓實現這一目標?我讀了,也許pandas.factorize
可能在這裏的幫助,但我不知道如何使用它...(pandas documentation在這個功能是沒有幫助的)
另外:我不介意0-基於組的計數,也不是奇怪的排序順序;但我希望將dgroup_id
作爲整數,而不是浮點數。
不知道,但怎麼樣努力'(duplicates.reset_index ().index).astype(int)'? –