2016-12-04 7 views
0

私は2つを渡す関数fを持っていますpandas.DataFrames。私は最初のものの列を繰り返しています。 2番目のインデックス値が含まれます。インデックスは文字列、特に'1950abcbdf69bc4b6da8d950e87f538f'のようなMD5文字列です。これらのインデックスを使用して、2番目のデータフレームの行を取得します。ここでは、コードがあります:Pandas/Numpy(v0.19.1/v1.11.2)データフレームのパフォーマンスインデックスでアクセスするときの問題

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 16.04.1 LTS、VM)上で非常に細かい動作しますが、原因のパフォーマンスの問題、私は、サーバーVM(のDebian GNU/Linuxの8(ジェシー)、Iに移動しましたより多くの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倍以上)ことです。コード例では、 "VERY SLOW"という行をマークしました。その行を実行するにはサーバーに0.094秒かかります。 .loc[]はさらに遅かった。あなたはこれの理由を想像できますか?

答えて

0

私が質問を書いたら、私は既にnumpyとpandasの違うバージョンに気づきました。したがって、私はちょうどダウングレード両方のパッケージのバージョンと今は魅力のように動作します。したがって、その最新バージョンのnumpyまたはpandasはここでバグです...

関連する問題