首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据来自另一列的值对数据帧索引的操作

根据来自另一列的值对数据帧索引的操作
EN

Stack Overflow用户
提问于 2020-03-05 20:03:04
回答 1查看 120关注 0票数 1

假设我有一个dataframe,它的数据如下所示:

代码语言:javascript
复制
   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组相对应,例如,这是我想要的数据:

代码语言:javascript
复制
   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组时,索引是如何从1开始的(而不是0)。

我试着对它进行编码,但它并没有真正起作用。可能需要帮助!

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-05 20:10:36

使用groupbycumcount。我们将使用add将累积计数调整为1:

代码语言:javascript
复制
df.index = df.groupby('T week').cumcount().add(1)

[外]

代码语言:javascript
复制
  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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60553128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档