gpt4 book ai didi

python - 在不使用笛卡尔积的情况下在大型数据框中查找相同的值

转载 作者:行者123 更新时间:2023-12-05 05:38:18 24 4
gpt4 key购买 nike

我有一个很大的数据框,假设有 200,000 条记录。

数据集看起来像:

      company  id
0 A 123
1 A 124
2 A 135
3 B 124
...
199,997 T 124
199,998 T 632
199,999 T 135

我想找到所有具有相同 ID 的对,不包括公司本身。例如,结果应该是这样的:

   company_x company_y id_x  id_y
0 A B 124 124
1 A T 124 124
2 A T 135 135
...

我知道我可以通过使用笛卡尔积简单地实现它:

df['a']=1
df2=pd.merge(df,df,how='left',on='a').drop('a',axis=1)
result=df2[(df2['company_x']!=df2['company_y'])&(df2[id_x]==df2[id_y])]

但问题是dataframe太大,这里使用笛卡尔积不是一个好主意,这需要大量内存。

有没有更好的解决方案?

最佳答案

我认为与其进行cross merge,不如仅在id 列上merge减少中间数据帧的大小

df.merge(df, on='id').query('company_x != company_y')

   company_x   id company_y
2 A 124 B
3 A 124 T
4 B 124 A
6 B 124 T
7 T 124 A
8 T 124 B
11 A 135 T
12 T 135 A

关于python - 在不使用笛卡尔积的情况下在大型数据框中查找相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72960661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com