【发布时间】:2015-11-01 21:49:53
【问题描述】:
我有一个案例,将来自“外部”for 循环的多个属性与来自“内部”for 循环的多个属性进行比较。
两个循环都在 pandas 数据帧上,稍微阅读一下,使用 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
有没有更合适的方法来对 pandas 数据框执行此类嵌套比较?不同的数据类型(即字典)是更好的起点吗?
【问题讨论】:
-
将一个 DataFrame 的每一行与另一个 DataFrame 的每一行进行比较本来就很慢,因为这是一个 O(m*n) 操作。这个过程的目标是什么?您真的需要将每一行与其他每一行进行比较吗?
-
使用
numpy可能会受益?
标签: python performance for-loop pandas vectorization