1
我有一個多指標數據框,看起來像切片大熊貓多指標數據框中使用索引列表值
UID TID文本
ABC X T1
BCDŸT2
UIDtid是索引。我有一個列表uid s,並且想要獲得對應於該列表中用戶的行,但保留第二級索引值(tid)。我想不做任何顯式的循環。那可能嗎?
我有一個多指標數據框,看起來像切片大熊貓多指標數據框中使用索引列表值
UID TID文本
ABC X T1
BCDŸT2
UIDtid是索引。我有一個列表uid s,並且想要獲得對應於該列表中用戶的行,但保留第二級索引值(tid)。我想不做任何顯式的循環。那可能嗎?
數據:
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
+掩模get_level_values
+ isin
:
df1 = df[df.index.get_level_values(0).isin(L)]
df1 = df.query('@L in uid')
print (df1)
text
uid tid
abc x t1
bcd y t2
感謝@jezrael。使用方法一,我得到'MultiIndex Slicing要求索引完全是放大的元組len(2),lexsort depth(0)'的錯誤。但2件作品。哪種效率最高?我有一個巨大的數據框。 – Rakib
最快的是先用'df = df.sort_index()'排序,然後用第一種方法。 'sort'解釋['97'](http://pandas.pydata.org/pandas-docs/stable/advanced.html#sorting-a-multiindex) – jezrael