Python 重新索引(重新映射)列';s值

Python 重新索引(重新映射)列';s值,python,pandas,indexing,dataframe,Python,Pandas,Indexing,Dataframe,我有一个看起来像 groupID date_time value member Session 23 2013-10-09 09:00:00 664639 Jerome 2607 23 2013-10-09 09:05:00 197290 Hence 2608 35 2013-10-09 09:10:00 470186

我有一个看起来像

 groupID        date_time         value     member     Session
     23       2013-10-09 09:00:00    664639   Jerome        2607
     23       2013-10-09 09:05:00    197290   Hence         2608
     35       2013-10-09 09:10:00    470186     Ann         2608
     35       2013-10-09 09:15:00    181314   Mikka         2608
     35       2013-10-09 09:20:00    969427  Cristy         2609
     37       2013-10-09 09:25:00    261473   James         2609
     37       2013-10-09 09:30:00    3698     Oliver        2609
因此,我希望的目标不是
2607
我有
1
,而不是
2608
我有
2
等,即进行某种重新索引或映射

       groupID        date_time         value     member     Session
         23       2013-10-09 09:00:00    664639   Jerome        1
         23       2013-10-09 09:05:00    197290   Hence         2
         35       2013-10-09 09:10:00    470186     Ann         2
         35       2013-10-09 09:15:00    181314   Mikka         2
         35       2013-10-09 09:20:00    969427  Cristy         3
         37       2013-10-09 09:25:00    261473   James         3
         37       2013-10-09 09:30:00    3698     Oliver        3
搜索
重新编制索引
没有给出期望的结果,因此我们将非常感谢您的建议

IIUC您可以执行以下操作:

df['Session'] -= 2606
看起来你的价值观正在以积极的方式增长

或者你可以定义一个dict并重新映射

session_vals = df['Session'].unique()
d = dict(zip(session_vals, np.arange(1, len(session_vals) + 1)))

df['Session'] = df['Session'].map(d)
另一种方法是使用

试试这个:

df['Session'] = np.unique(df['Session'], return_inverse=True)[1]

唯一会话将从0开始编号。

奇怪的是,它以
3
开始会话可能您列中的第一个会话是
3
,但列中最小的数字将是
0
。唯一标签将按输入的排序顺序排列。可能添加1以匹配所需的输出
np。唯一(df['Session'],return_inverse=True)[1]+1
谢谢,EdChum,它可以工作!顺便说一句,也许你可以看看这个问题(特别是因为它使用了你早期提出的方法,但是在
groupby
对象上有问题!
df['Session'] = np.unique(df['Session'], return_inverse=True)[1]