this answer'dan esinlenilen ve this question'a kolay bir cevabın bulunmadığı bir ortamda, MultiIndex düzeyine göre filtrelenmeyi kolaylaştırmak için kendimi biraz sözdizimsel şeker yazarken buldum. Ben pandalar geliştirme ekibi biliyorsanızDilim pandaları MultiIndex düzeyine veya alt seviyeye göre DataFrame
def _filter_series(x, level_name, filter_by):
"""
Filter a pd.Series or pd.DataFrame x by `filter_by` on the MultiIndex level
`level_name`
Uses `pd.Index.get_level_values()` in the background. `filter_by` is either
a string or an iterable.
"""
if isinstance(x, pd.Series) or isinstance(x, pd.DataFrame):
if type(filter_by) is str:
filter_by = [filter_by]
index = x.index.get_level_values(level_name).isin(filter_by)
return x[index]
else:
print "Not a pandas object"
Ama (ve yavaş yavaş, başlıyorum!) Zaten bunu yapmak için iyi bir yol var ve ben sadece henüz ne olduğunu bilmiyorum!
Doğru muyum?
Görünüşe göre df.loc [pd.IndexSlice [:,:, ['C1', 'C3'],:],:] 'veya' df.loc (eksen = 0) [:,:, ['C1 ',' C3 '],:] ' – joris
Bir MultiIndex'ten bir tarih aralığı seçmek için bir yol var mı? Ben df.loc [:, pd.IndexSlice [:,:,:,:, 'değer']] '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''] bir tarih olur ve yalnızca bir tarih aralığıyla dilimlemek istiyorum. tek bir gün. – toasteez