簡體   English   中英

在 MultiIndex 數據框中刪除重復的索引名稱

[英]Drop duplicated index names in MultiIndex dataframe

在對數據集執行一些操作后,我最終得到了這樣的數據框:

df = pd.DataFrame([1, 2, 3, 4, 5], 
              index = pd.MultiIndex.from_arrays(np.array([[0, 0, 1, 1, 1],
                                                          [1448, 1448, 1448, 1448, 1448],
                                                          [0, 0, 1, 1, 1],
                                                          [1448, 1448, 1448, 1448, 1448],
                                                          ['22', '11', '14', '15', '19']]), 
                                                names = ['meas_id', 'hec_id', 'meas_id', 'hec_id', 'lab_id']))

print(df)

                                      0
meas_id hec_id meas_id hec_id lab_id   
0       1448   0       1448   22      1
                              11      2
1       1448   1       1448   14      3
                              15      4
                              19      5

正如你可以看到, meas_idhec_idMultiIndex是重復的。 我可以使用reset_index([3, 4], drop=True)來刪除它們,但是這個結果數據框實際上是數據框列表的一部分,其中一些具有重復的索引列,有些沒有。 因此我的問題是:如何從 MultiIndex 中刪除重復的索引列?

請注意,此問題指的是列中的重復項,而不是行中的重復項。

對於通用刪除重復索引名稱的解決方案,您可以執行以下操作:

import numpy as np

ixs = np.flatnonzero(pd.Index(df.index.names).duplicated()).tolist()
df.reset_index(ixs, drop=True)

                       0
meas_id hec_id lab_id   
0       1448   22      1
               11      2
1       1448   14      3
               15      4
               19      5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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