0
我有一个函数f,我通过了两个pandas.DataFrames
。我正在遍历第一个的列。它包含第二个索引值。索引是一个字符串,更具体地说是一个MD5字符串,如'1950abcbdf69bc4b6da8d950e87f538f'
。我使用这些索引来检索第二个数据帧的行。下面的代码:熊猫/ Numpy(v0.19.1/v1.11.2)dataframe性能通过索引访问时的问题
def f(df_A, df_B):
for row in df_A.itertuples():
hash_index=row[1]
fields_B = df_B.ix[hash_index].values # <== VERY SLOW
它可以在我的笔记本电脑(Ubuntu的LTS 16.04.1,VM)很细,但是由于性能问题,我移动到服务器VM(的Debian GNU/Linux的8(杰西),我需要更多的RAM)。服务器使用:
'3.5.2 (default, Dec 3 2016, 16:49:26) \n[GCC 4.9.2]'
numpy==1.11.2
pandas==0.19.1
我的电脑有:
'3.5.2 (default, Nov 17 2016, 17:05:23) \n[GCC 5.4.0 20160609]'
numpy==1.11.1
pandas==0.18.1
提最相关的数据。最大的问题是,服务器速度较慢(1000倍甚至更多)。在代码示例中,我用“非常慢”标记了该行。它需要服务器0.094秒来执行该行。 .loc[]
更慢。你能想象一个原因吗?