繁体   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