首页 > 解决方案 > 如何为熊猫中的链接对创建唯一的情侣ID

问题描述

我有一个将人们联系在一起的数据框。例如,

>>> import pandas as pd
>>> df = pd.DataFrame([[1,2],[2,1],[3,4],[5,6],[4,3],[6,5]], columns=['m_id', 'f_id'])
>>> df
   m_id  f_id
0     1     2
1     2     1
2     3     4
3     5     6
4     4     3
5     6     5

我的目标是创建第三列,为每对m_id和创建一个唯一的 id f_id。例如,以下所需的输出。

>>> df
   m_id  f_id  shared_id
0     1     2          0
1     2     1          0
2     3     4          1
3     5     6          2
4     4     3          1
5     6     5          2

更新

这不是这个问题的重复,因为我不想从典型的 groupby 中取回组 ID。就我而言,我有两列,我想根据一行中的两个元素是否与其他行中的两个元素相同来分配一个组 ID,而忽略列的顺序。

标签: pythonpandas

解决方案


IIUC

pd.DataFrame(np.sort(df.values,1),index=df.index).groupby([0,1]).ngroup()
Out[94]: 
0    0
1    0
2    1
3    2
4    1
5    2
dtype: int64

推荐阅读