如何在Pandas中高效实现类似SQL的表自联合并(交换列)
高效实现Pandas中类似SQL自联合并交换列的操作
针对你需要实现的类似SQL UNION 交换列后合并的需求,有更简洁的方式,完全不需要复杂的索引重排操作:
方法1:直接复制原表并交换列
# 复制原表,仅交换user1和user2列 df_swapped = df.copy() df_swapped[['user1', 'user2']] = df_swapped[['user2', 'user1']] # 合并原表与交换后的表 df_combined = pd.concat([df, df_swapped], ignore_index=True)
方法2:一行代码生成交换后的表(更简洁)
如果不需要纠结其他列的顺序,直接用rename快速调换列名,再合并:
df_combined = pd.concat([df, df.rename(columns={'user1':'user2', 'user2':'user1'})], ignore_index=True)
后续统计好友数量
合并完成后,就能像SQL里那样按user1分组统计好友数:
friend_count = df_combined.groupby('user1')['user2'].nunique().reset_index(name='friend_count')
为什么你之前的方法繁琐?
你之前用reindex再手动交换列的方式多了不必要的步骤——直接复制原表并交换指定列,或者用rename快速调换列名,就能精准达到SQL中UNION的效果,同时避免冗余操作。
内容的提问来源于stack exchange,提问作者Oskar
相关产品推荐
相关产品推荐

