Как получить фрейм данных в иерархических индексах, которые являются уникальными значениями объекта - PullRequest
1 голос
/ 20 мая 2019

Я получаю 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 ]

2 голосов
/ 20 мая 2019

Если создать MultiIndex от DataFrame.set_index:

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 на False: docs :

Мы «разрешили» верхние уровни индексов, чтобы сделать вывод на консоль немного проще для глаз. Обратите внимание, что показом индекса можно управлять с помощью 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
0 голосов
/ 20 мая 2019

просто

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

Вам не нужно упоминать здесь уникальное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...