[英]Getting the same row multiple times out of a MultiIndexed DataFrame
假設我有一個 MultiIndexed Dataframe 和一個普通的,例如
index = [['foo','foo','bar','bar'],['spam','eggs','spam','eggs']]
arr = np.arange(1,13).reshape((4,3))
df_multi = pd.DataFrame(arr, index = index)
df = pd.DataFrame(arr)
如果我需要來自常規 DataFrame 的多行,我會這樣做:
request = [0,0,1,0,1,2]
rows = df.loc[request]
rows
對象是一個新的數據幀,其中每一行都按照request
定義的順序來自df
,對我來說這里的關鍵部分是request
的順序保持不變,我可以通過請求多次獲得相同的行多次。
但是如果我對 MultiIndexed DataFrame 做同樣的事情:
request = (['foo','foo', 'foo'], ['spam', 'eggs', 'spam'])
rows = df_multi.loc(axis=0)[request]
我只會從我的請求中獲取唯一的行,然后對它們進行排序。 正如我所期望的那樣,情況將與前一種情況一樣,未排序並按要求重復。
我怎么能做到這一點?
傳遞定義每行 MultiIndex 值的元組迭代,例如使用zip(*request)
:
rows = df_multi.loc[zip(*request)]
rows
Out[51]:
0 1 2
foo spam 1 2 3
eggs 4 5 6
spam 1 2 3
注意: list(zip(*request))
計算為
[('foo', 'spam'), ('foo', 'eggs'), ('foo', 'spam')]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.