reindex(重新映射)列的值

时间:2015-11-05 14:41:12

标签: 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     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

reindexing上搜索未获得预期结果,因此您的建议将受到赞赏

2 个答案:

答案 0 :(得分:1)

您可以做的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)

另一种方法是使用pd.factorize

In [233]:
df['Session'] = pd.factorize(df['Session'])[0] + 1
df

Out[233]:
   groupID           date_time   value  member  Session
0       23 2013-10-09 09:00:00  664639  Jerome        1
1       23 2013-10-09 09:05:00  197290   Hence        2
2       35 2013-10-09 09:10:00  470186     Ann        2
3       35 2013-10-09 09:15:00  181314   Mikka        2
4       35 2013-10-09 09:20:00  969427  Cristy        3
5       37 2013-10-09 09:25:00  261473   James        3
6       37 2013-10-09 09:30:00    3698  Oliver        3

答案 1 :(得分:0)

试试这个:

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

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