Python 比较数据帧中的值

Python 比较数据帧中的值,python,dataframe,Python,Dataframe,我正在做一个Python项目,并试图从一开始就使用Pandas减少一些计算时间。 目前的代码是: for c1 in centres1: for c2 in centres2: if ((c1[0]-c2[0])**2 + (c1[1]-c2[1])**2) < search_rad*search_rad: possible_commet.append([c1,c2]) 对于中心1中的c1: 对于中心c2: 如果((c1[0]-c2[0])

我正在做一个
Python
项目,并试图从一开始就使用
Pandas
减少一些计算时间。 目前的代码是:

for c1 in centres1:
    for c2 in centres2:
        if ((c1[0]-c2[0])**2 + (c1[1]-c2[1])**2) < search_rad*search_rad:
            possible_commet.append([c1,c2])
对于中心1中的c1:
对于中心c2:
如果((c1[0]-c2[0])**2+(c1[1]-c2[1])**2)
我试图将
centres1
centres2
放入数据帧中,然后将每个值与其他值进行比较。熊猫会帮我缩短一些时间吗?(当前
2分钟
)。如果不是的话,我该如何解决这个问题?
谢谢

是的,当然熊猫会帮助你至少缩短一些时间,这比你现在得到的时间要少,但你可以尝试一下:

  for i,j in zip(center1, center2):
      if ((c1[0]-c2[0])**2 + (c1[1]-c2[1])**2) < search_rad*search_rad:
        possible_commet.append([c1,c2])
邮政编码中的i,j的
(中心1,中心2):
如果((c1[0]-c2[0])**2+(c1[1]-c2[1])**2)
不幸的是,这永远不会很快,因为您将要执行n平方运算。例如,如果您正在比较
n
对象,其中
n=1000
,那么您只有100万次比较。然而,如果你有
n=10_000
,那么你需要进行1亿次比较。一个10倍大的问题会变慢100倍

然而,python中的for循环相对昂贵。使用像pandas这样的库可能意味着您只能进行一次函数调用,并将节省一些时间。如果没有任何输入数据,很难进一步提供帮助,但下面应该提供一些构建块

导入熊猫
df1=熊猫数据帧(中心1)
df2=熊猫数据帧(中心2)
df3=df1.merge(df2,how='cross')
df3['combined_center']=((df3['0_x']-df2['0_y']**2+(df1['1_x']-df['1_y'])**2)
df3[df3['prod']>搜索半径**2

是否特别需要嵌套循环?似乎您正在寻找
zip()
这已经快多了,非常感谢:)嗨,所以我试着去实现它,结果拒绝了我的点,特别是那些500席的XI不认为<代码> zip < /C>会在这里工作,从我理解的问题来看,他们正在寻找所有可能的排列,而不是简单地从每个列表中输入第一个条目。