在pandas数据帧中创建子索引

时间:2017-09-08 07:03:03

标签: python-3.x pandas numpy

好的,这很棘手。我有一个pandas数据帧,我正在处理机器日志数据。我在数据中有一个索引,但是这个数据框中有各种各样的工作。我希望能够为这些个人工作提供他们自己的索引,以便我可以将它们相互比较。所以我想要一个索引从零开始的另一列,直到作业结束,然后为新作业重置为零。或者我一行一行地做这个?

1 个答案:

答案 0 :(得分:2)

我认为您需要set_index cumcount来计算类别:

np.random.seed(456)
df = pd.DataFrame({'Jobs':np.random.choice(['a','b','c'], size=10)})

#solution with sorting
df1 = df.sort_values('Jobs').reset_index(drop=True)
df1 = df1.set_index(df1.groupby('Jobs').cumcount(), append=True)
print (df1)
    Jobs
0 0    a
1 1    a
2 2    a
3 0    b
4 1    b
5 2    b
6 3    b
7 0    c
8 1    c
9 2    c

样品:

#solution with no sorting
df2 = df.set_index(df.groupby('Jobs').cumcount(), append=True)
print (df2)
    Jobs
0 0    b
1 1    b
2 0    c
3 0    a
4 1    c
5 2    c
6 1    a
7 2    b
8 2    a
9 3    b
$table1 = <table style="width:100%">
               <tr>
                  <th>Firstname</th>
                  <th>Lastname</th> 
                  <th>Age</th>
               </tr>
               <tr>
                   <td>Jill</td>
                   <td>Smith</td> 
                   <td>50</td>
               </tr>
               <tr>
                    <td>Eve</td>
                    <td>Jackson</td> 
                    <td>94</td>
               </tr>
          </table>
;