Python 为循环嵌套矢量化-熊猫

Python 为循环嵌套矢量化-熊猫,python,performance,for-loop,pandas,vectorization,Python,Performance,For Loop,Pandas,Vectorization,我有一个例子,将来自“外部”for循环的多个属性与来自“内部”for循环的多个属性进行比较 这两个循环都在数据帧上,从一点读数来看,使用iterrows()进行此类作业通常会比较慢 下面是如何/为什么使用此嵌套for循环的说明。它非常慢 for key1, values1 in dataframe_1.iterrows(): for key2, values2 in dataframe_2.iterrows(): if values2['a'] >

我有一个例子,将来自“外部”for循环的多个属性与来自“内部”for循环的多个属性进行比较

这两个循环都在数据帧上,从一点读数来看,使用
iterrows()
进行此类作业通常会比较慢

下面是如何/为什么使用此嵌套for循环的说明。它非常慢

for key1, values1 in dataframe_1.iterrows():        

    for key2, values2 in dataframe_2.iterrows():

        if values2['a'] > values1['a'] and value2['b'] == values1['b']:
            # do something, such as append to a combined df

有没有更合适的方法在数据帧上执行这些嵌套比较?不同的数据类型(即字典)是否是更好的起点?

您根本不必为
循环应用
,或
iterrows()

for i in ((d2['a'] > d1['a']) & (d2['b'] == d1['b'])):
    # do something
    print i
根据要使用的值,可以更改行:

(d2['a'] > d1['a']) & (d2['b'] == d1['b'])

获取进行某些操作所需的数据。

您根本不必为
循环或
iterrows()
应用

for i in ((d2['a'] > d1['a']) & (d2['b'] == d1['b'])):
    # do something
    print i
根据要使用的值,可以更改行:

(d2['a'] > d1['a']) & (d2['b'] == d1['b'])

获取执行某些操作所需的数据。

比较一个数据帧的每一行与另一个数据帧的每一行本质上很慢,因为这是一个O(m*n)操作。这个过程的目标是什么?您真的需要将每一行与另一行进行比较吗?使用
numpy
可能会有好处?将一个数据帧的每一行与另一个数据帧的每一行进行比较本质上是很慢的,因为这是一个O(m*n)操作。这个过程的目标是什么?您真的需要将每一行与每一行进行比较吗?使用
numpy
可能会有好处?