別の列の値に基づいてデータフレームのインデックスの操作

dexter27:

たぶん私は現在、このようなデータを持つデータフレームを持っています:

   T week
0  T-1
1  T-1
2  T-1
3  T-1
4  T-2
5  T-2
6  T-2
7  T-3
8  T-3
9  T-3
10 T-3

私はグループに、たとえば、これは私が欲しいデータフレームである、それは私が扱っていますT-グループに対応するよう、Aの方法でインデックスを、したいです:

   T week
1  T-1
2  T-1
3  T-1
4  T-1
1  T-2
2  T-2
3  T-2
1  T-3
2  T-3
3  T-3
4  T-3

新しいT基が存在する場合、インデックスは、(0の代わりに)再度1から開始する方法に注意してください。

私はこれをコーディングしようとしたが、それは実際に動作しませんでした。いくつかの助けを使用することができます!

import os,xlrd,pandas as pd

df = pd.read_excel(r'dir\file.xlsx')
book = xlrd.open_workbook(r'dir\file.xlsx')
sheet = book.sheet_by_name('Sheet1')

t_value = None
next_t = None
tabcount = 0
idx = 1
i = 1

while i!=sheet.nrows:
    t_value = df['T Week'][i]
    next_t = df['T Week'][i+1]
    if t_value == next_t:
        tabcount+=1
        df.at[i,'Num'] = idx
        idx+=1
    else:
        idx = 0
        df.at[i, 'Num'] = idx
    i+=1
クリス・A:

使用groupbyしてcumcount我々は、すべて使用しますadd1でcumcountを調整します:

df.index = df.groupby('T week').cumcount().add(1)

でる]

  T week
1    T-1
2    T-1
3    T-1
4    T-1
1    T-2
2    T-2
3    T-2
1    T-3
2    T-3
3    T-3
4    T-3

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=32228&siteId=1