【发布时间】:2017-08-31 17:29:26
【问题描述】:
我正在尝试找出在 Pandas 中使用其他值的列表(数据框)搜索数据框的最有效方法,而无需使用蛮力方法。有没有办法对其进行矢量化?我知道我可以循环列表(或数据框)的每个元素并使用 loc 方法提取数据,但希望更快。我有一个包含 100 万行的数据框,我需要在其中搜索以提取 600,000 行的索引。
例子:
import pandas as pd
import numpy as np
df = pd.DataFrame({'WholeList': np.round(1000000*(np.random.rand(1000000)),0)})
df2 = pd.DataFrame({'ThingsToFind': np.arange(50000)+50000})
df.loc[1:10,:]
#Edited, now that I think about it, the 'arange' method would have been better to populate the arrays.
我想要最有效的方法来获取 df2 在 df 中的索引,它存在于 df 中。
谢谢!
【问题讨论】:
-
所以,输出的长度是
1 million? -
另外,如果
df中的df2不匹配,输出什么? -
您是否尝试过使用 isin() DataFrame 方法?
-
现在我想,无论哪种长度都可以。
-
@Andrew L 我主要尝试通过 loc 方法进行暴力破解,但我认为这是最耗时的方法。
标签: python performance pandas numpy processing-efficiency