首页 > 解决方案 > 如何在 DataFrame 列中“关闭”匹配对

问题描述

说我有一个df:

src    dest
LV       NC
LA       NY
NC       LV
NY       LA

如何“关闭”唯一的 src/dest 对,以便可以像这样在新列中引用它们?

src    dest     pair
LV       NC       1
LA       NY       2
NC       LV       1
NY       LA       2

df = pd.DataFrame({'src':['LV','LA','NC','NY'], 'dest':['NC', 'NY', 'LV', 'LA']})

标签: pythonpandasdataframe

解决方案


您可以对数据进行排序并使用groupby().ngroup()

df['pair'] = (pd.DataFrame(np.sort(df, axis=1))
   .groupby([0,1], sort=False).ngroup() + 1
)

输出:

  src dest  pair
0  LV   NC     1
1  LA   NY     2
2  NC   LV     1
3  NY   LA     2

推荐阅读