【问题标题】:how to create unique couple id for linked pairs in pandas如何为熊猫中的链接对创建唯一的情侣ID
【发布时间】:2019-12-10 11:44:37
【问题描述】:

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

>>> 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 和 f_id 创建一个唯一 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

更新

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

【问题讨论】:

标签: python pandas


【解决方案1】:

如果有数值,可以使用np.unique获取分组,排序后。

df['share_id'] = np.unique(np.sort(df.to_numpy(), axis=1), axis=0, return_inverse=True)[1]

   m_id  f_id  share_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

【讨论】:

    【解决方案2】:

    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
    

    【讨论】:

      猜你喜欢
      • 2022-11-28
      • 2017-02-01
      • 1970-01-01
      • 2017-06-26
      • 2023-01-28
      • 2019-03-14
      • 2016-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多