首页 > 解决方案 > 有效地展平熊猫中的大型多索引

问题描述

我有一个非常大的 DataFrame,如下所示:

                  A B 
SPH2008 3/21/2008 1 2
        3/21/2008 1 2 
        3/21/2008 1 2
SPM2008 6/21/2008 1 2 
        6/21/2008 1 2
        6/21/2008 1 2

我有以下代码,旨在将两个索引的唯一对展平并获取到一个新的 DF 中:

indeces = [df.index.get_level_values(0), df.index.get_level_values(1)]
tmp = pd.DataFrame(data=indeces).T.drop_duplicates()
tmp.columns = ['ID', 'ExpirationDate']
tmp.sort_values('ExpirationDate', inplace=True)

然而,该操作需要非常长的时间。有没有更有效的方法来做到这一点?

标签: pythonpandas

解决方案


pandas.DataFrame.index.drop_duplicates

pd.DataFrame([*df.index.drop_duplicates()], columns=['ID', 'ExpirationDate'])

        ID ExpirationDate
0  SPH2008      3/21/2008
1  SPM2008      6/21/2008

对于无法以这种方式解包的旧版本的 Python

pd.DataFrame(df.index.drop_duplicates().tolist(), columns=['ID', 'ExpirationDate'])

推荐阅读