簡體   English   中英

從 MultiIndexed DataFrame 中多次獲取同一行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM