1
私はこのデータフレームを持っている:パンダのペアのグループにラベルを付けるには?
>>> df = pd.DataFrame({'A': [1, 2, 1, np.nan, 2, 2, 2], 'B': [2, 1, 2, 2.0, 1, 1, 2]})
>>> df
A B
0 1.0 2.0
1 2.0 1.0
2 1.0 2.0
3 NaN 2.0
4 2.0 1.0
5 2.0 1.0
6 2.0 2.0
私はこのような何かを得るために、3列目 "グループID" にペア(A、B)のグループを特定する必要がありますどのように
>>> df
A B grup id explanation
0 1.0 2.0 1.0 <- group (1.0, 2.0), first group
1 2.0 1.0 2.0 <- group (2.0, 1.0), second group
2 1.0 2.0 1.0 <- group (1.0, 2.0), first group
3 NaN 2.0 NaN <- invalid group
4 2.0 1.0 2.0 <- group (2.0, 1.0), second group
5 2.0 1.0 2.0 <- group (2.0, 1.0), second group
6 2.0 2.0 3.0 <- group (2.0, 2.0), third group
を私はパンダでこれを効率的に行うことができますか?
1つの考え方は、結合された列(A、B)を作成し、その列の一意の値を特定し、それらをデータフレームにマップすることです。しかし、私はgroupby()アプローチがより速く(よりエレガントに)なると考えています。
>>> df.groupby(['A','B']).count()
Empty DataFrame
Columns: []
Index: [(1.0, 2.0), (2.0, 1.0), (2.0, 2.0)]
だからこのGROUPBY()のインデックスは私が必要とするすべてのグループが一覧表示されます:
は、私はこれを試してみました。しかし、それらを数え、それを私のデータフレームに戻す方法は?