2017-01-19 8 views
2

Ich habe eine Liste, die wie folgt aussieht:Wie schneidet man eine Liste und einen Datenrahmen in Pandas?

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

ich einen Datenrahmen haben, die wie folgt aussieht:

       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 

Wie kann ich die beiden Dateien bequem erzeugen schneiden und geben ein Datenrahmen wie die folgende Liste:

       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

Blick auf [ 'pandas.DataFrame.isin'] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas .DataFrame.isin.html). Sie werden im Grunde folgendes tun: 'new_df = df [df.index.isin (my_set_of_locators)] ', nachdem Sie diese Elemente in Ihrem' set' gezwungen haben, die Struktur des Indexes Ihres Datenrahmens zu erreichen. – blacksite

Antwort

4

Sie Ihren Index reinigen, dh zusätzliche Saiten vor loc entfernen, und dannverwenden 0 Verfahren wie @not_a_robot vorgeschlagen:

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

Verwandte Themen