如何在层次索引中获取数据框,层次索引是要素的唯一值

时间:2019-05-20 06:49:10

标签: python pandas pandas-groupby

我得到一个df,如下:

    tradeMonth  tradeDay    tradeMoney  plate
0   12.0        2           2000.0      BK00052
1   11.0        1           2000.0      BK00052
2   2.0         0           16000.0     BK00028
3   4.0         1           1600.0      BK00028
4   2.0         2           2900.0      BK00017

我想使用groupby('plate')来获得df,如下所示:

    plate       tradeMonth      tradeDay    tradeMoney  
    BK00052     12.0            2           2000.0      
                11.0            1           2000.0      
    BK00028     2.0             0           16000.0     
                4.0             1           1600.0      
    BK00017     2.0             2           2900.0      

而且我尝试使用df.unique()来获取plate的唯一值作为层次结构索引。但是接下来我应该实施什么呢?
有人可以帮我吗?
预先感谢。

2 个答案:

答案 0 :(得分:2)

如果通过DataFrame.set_index创建MultiIndex

df = df.set_index(['plate','tradeMonth','tradeDay'])
print (df)
                             tradeMoney
plate   tradeMonth tradeDay            
BK00052 12.0       2             2000.0
        11.0       1             2000.0
BK00028 2.0        0            16000.0
        4.0        1             1600.0
BK00017 2.0        2             2900.0

似乎第一级中的数据是唯一的,但不是唯一的,默认情况下不会显示。要进行验证,请将multi_sparse更改为Falsedocs

  

我们已经“分散化”了索引的较高级别,以使控制台输出看起来更容易一些。请注意,可以使用multi_sparse option来控制索引的显示方式:

with pd.option_context('display.multi_sparse', False):
    print (df)
                             tradeMoney
plate   tradeMonth tradeDay            
BK00052 12.0       2             2000.0
BK00052 11.0       1             2000.0
BK00028 2.0        0            16000.0
BK00028 4.0        1             1600.0
BK00017 2.0        2             2900.0

答案 1 :(得分:0)

简单

df = df.groupby('plate').groups
print df

您无需在此处提及独特之处。