Панды: Изменить повторный индекс на иерархический индекс - PullRequest
0 голосов
/ 06 ноября 2018

См. Пример ниже.

С учетом того, что для фрейма данных, индекс которого имеет повторяющиеся значения, можно получить новый фрейм данных с иерархическим индексом, первый уровень которого является исходным индексом, а второй уровень - 0, 1, 2, ..., n?

Пример:

>>> df
   0  1
a  2  4
a  4  6
b  7  8
b  2  4
c  3  7
>>> df2 = df.some_operation()
>>> df2
      0  1
a  0  2  4
   1  4  6
b  0  7  8
   1  2  4
c  0  3  7

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Может подделать (совершенно не рекомендуется, не используйте это):

>>> df.index=[v if i%2 else '' for i,v in enumerate(df.index)]
>>> df.insert(0,'',([0,1]*3)[:-1])
>>> df
      0  1
   0  2  4
a  1  4  6
   0  7  8
b  1  2  4
   0  3  7
>>> 

Измените имена индексов и создайте столбец с именем столбца '' (пустая строка).

0 голосов
/ 06 ноября 2018

Вы можете использовать cumcount

df.assign(level2=df.groupby(level=0).cumcount()).set_index('level2',append=True)
Out[366]: 
          0  1
  level2      
a 0       2  4
  1       4  6
b 0       7  8
  1       2  4
c 0       3  7
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...