2017-09-30 1 views

Antwort

1

Daten:

L = ['abc', 'bcd'] 

print (df) 
     text 
uid tid  
abc x  t1 
abc1 x  t1 
bcd y  t2 

1. slicers

idx = pd.IndexSlice 
df1 = df.loc[idx[L,:],:] 

2. boolean indexing + Maske mit get_level_values + isin:


3. query, docs:

df1 = df.query('@L in uid') 
print (df1) 
     text 
uid tid  
abc x  t1 
bcd y  t2 
+0

dank @jezrael. Bei Ansatz eins bekomme ich 'MultiIndex Slicing erfordert, dass der Index vollständig lexsortiert ist tuple len (2), lexsort depth (0)' Fehler. Aber 2 Arbeiten. Welches ist das effizienteste? Ich habe einen riesigen Datenrahmen. – Rakib

+0

der schnellste sortiert zuerst nach 'df = df.sort_index()' und verwendet dann die erste Methode. 'Sortierung' wird erklärt ['In 97'] (http://pandas.pydata.org/pandas-docs/stable/advanced.html#sorting-a-multiindex) – jezrael

Verwandte Themen