Как заменить индекс во фрейме данных - PullRequest
1 голос
/ 30 апреля 2019

У меня есть фрейм данных следующим образом:

df = pd.DataFrame({'year': [2010, 2011, 2012, 2015,2016,2017],
                 'sales': [10, 12, 13, 9, 11,7],
                   'Groups': ['AA', 'BB', 'AA', 'AA', 'CC', 'CC']}) 

я пытаюсь сопоставить столбцу «Группы» целочисленное значение индекса, чтобы одни и те же члены группы назначали один и тот же номер индекса. Что-то вроде этого:

Index year  sales Groups
1     2010     10     AA
2     2011     12     BB
1     2012     13     AA
1     2015      9     AA
3     2016     11     CC
3     2017      7     CC

Я думал использовать set_index, но не уверен, что это правильный подход.

я пытаюсь сопоставить столбец «Группы» со значением индекса, чтобы одни и те же члены группы назначали один и тот же номер индекса. Примерно так:

Index year  sales Groups
1     2010     10     AA
2     2011     12     BB
1     2012     13     AA
1     2015      9     AA
3     2016     11     CC
3     2017      7     CC

Спасибо за любую помощь.

Ответы [ 2 ]

2 голосов
/ 30 апреля 2019

Использование ngroup

df.index=df.groupby('Groups').ngroup()+1

или factorize и cat.codes

df.index=pd.factorize(df.Groups)[0]+1

df.index=df.Groups.astype('category').cat.codes+1
1 голос
/ 30 апреля 2019

Есть ли причина, по которой вы не сортируете первыми?

Или вы можете попробовать это:

df = df.sort_values('Groups')
df['index'] = df['Groups'].rank(method='dense')

Она будет ранжировать ваши группы и соответствующим образом их индексировать.

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