2017-01-19 6 views
2

私はこのようになりますリストを持っている:パンダでリストとデータフレームを交差させる方法は?

set(['loc. 08652', 'loc. 14331', 'loc. 08650', 'loc.06045', 'loc.10160', 'loc. 08656'] 

私はこのようになり、データフレームを持っている:

       lung  heart  kidney 
asx1.1_ox1.0.loc.08652 32.406993 51.709692 15.883315 
asx1.1_ox1.0.loc.14331 5.255465 86.048540 8.695995 
asx1.1_ox1.0.loc.12124 34.730648 39.070967 26.198384 
asx1.1_ox1.0.loc.06045 50.992902 28.701922 20.305177 
asx1.1_ox1.0.loc.10160 27.619962 63.702141 8.677896 
asx1.1_ox1.0.loc.20210 45.148668 43.700587 11.150744 

どのように便利な二つのファイル、および出力データフレームINTERSECT生成することができます以下のことのように:

       lung  heart  kidney 
asx1.1_ox1.0.loc.08652 32.406993 51.709692 15.883315 
asx1.1_ox1.0.loc.14331 5.255465 86.048540 8.695995 
asx1.1_ox1.0.loc.06045 50.992902 28.701922 20.305177 
asx1.1_ox1.0.loc.10160 27.619962 63.702141 8.677896 
+2

[ 'pandas.DataFrame.isin']を見(http://pandas.pydata.org/pandas-docs/stable/generated/pandas .DataFrame.isin.html)。基本的に 'new_df = df [df.index.isin(my_set_of_locators)]'のように、 'set'の要素をデータフレームのインデックスの構造に合わせて強制します。 – blacksite

答えて

4

あなたはすなわちloc前に余分な文字列を削除し、を使用し、あなたのインデックスをきれいにすることができます0 @not_a_robotによって示唆されるように方法:

s = set(['loc.08652', 'loc.14331', 'loc.08650', 'loc.06045', 'loc.10160', 'loc. 08656'] 
# the set has been cleaned here so that it doesn't contain spaces 

df[df.index.str.replace(".*(?=loc)", "").isin(s)] 

enter image description here

関連する問題