2017-11-20 18 views
-1

私は同じ次元ではないデータフレームをいくつか持っています。共通の入力を探すために、各データフレームの1つの列を比較したいと思います。次の例は、2つのdataframes-dfとdf1を示しています。異なるデータフレーム内の特に類似の要素の比較

In [22]: df.head() 
Out[22]: 
    Upreg_Genes Upreg_Norm_LogFC 
0  Tnfrsf9   1.000000   
1  Fblim1   0.994910   
2  Spint1   0.959538   
3  Trim12a   0.948319   
4  Gdf15   0.920928  

In [23]: df.shape 
Out[23]: (20, 4) 



In [25]: df1.head() 
Out[25]: 
    molregno  chembl_id component_id component_synonym 
0 894233 CHEMBL1470349   5432    ATAD5  
1 942606 CHEMBL1518722   3947   NFE2L2  
2 925353 CHEMBL1501469   5147    SMN2  
3 1096102 CHEMBL1715371    3    P53  
4 934103 CHEMBL1510219   2693   GNAS1  

In [26]: df1.shape 
Out[26]: (34, 5) 

私は、共通の遺伝子記号を探すためにDF1にDFの列Upreg_Genesと列component_synonymの行の行を比較したいと思います。 どうやって類似点を目にすることなくこれを行うことができますか?

+0

2つの間に[交差点を設定](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Index.intersection.html)が必要ですか? –

+0

類似点の例を教えてください。私は最初の目で見ていない。また、「Upreg_Genes列の列を比較したいですか?」という意味をさらに説明できますか?私は言葉に混乱している – MattR

+0

@ブラッドソロモンはい、私は!お手伝いありがとう。 –

答えて

1

2つのシリーズ間の交差点を探しているようです。

あなたがセットの両方に変換し、または使用することができます

import numpy as np 
pd.Series(np.intersect1d(df.Upreg_Genes.values, df1.component_synonym.values)) 

あなたの結果はUpreg_Genescomponent_synonymの両方に属している値が含まれているパンダのシリーズです。

Proposed @ back by @ eldad-a。

+0

これはうまくいきました、ありがとう! –

+0

'.values'を呼び出さずにこれを行うことができますが、そうするのが速いと思われます。 –

+0

@cᴏʟᴅscallingは '.values'を呼び出すのが実際に速いかもしれません - https://stackoverflow.com/a/21175114/7954504 –

関連する問題