python - pandas 数据框中按升序对组内的行进行编号

标签 python pandas group-by rank

给定以下数据框:

import pandas as pd
import numpy as np

df = pd.DataFrame({'A': ['A','A','A','B','B','B'],
                   'B': ['a','a','b','a','a','a'],
                  })
df
    A   B
0   A   a 
1   A   a 
2   A   b 
3   B   a 
4   B   a 
5   B   a

我想创建列“C”,它对 A 列和 B 列中每个组内的行进行编号,如下所示:

    A   B   C
0   A   a   1
1   A   a   2
2   A   b   1
3   B   a   1
4   B   a   2
5   B   a   3

到目前为止我已经尝试过:

df['C'] = df.groupby(['A','B'])['B'].transform('rank')

...但它不起作用!

最佳答案

使用groupby/cumcount :

In [25]: df['C'] = df.groupby(['A','B']).cumcount()+1; df
Out[25]: 
   A  B  C
0  A  a  1
1  A  a  2
2  A  b  1
3  B  a  1
4  B  a  2
5  B  a  3

关于python - pandas 数据框中按升序对组内的行进行编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37997668/

相关文章:

python - Scikit-Learn 中的分层标记 K 折交叉验证

python - 如何在 Python 中访问聚合函数的值

mysql - 如何明智地获取数据消息?

python - 如何在 python 中建立方程式

python - imshow 带有整数轴标签的图

python - 网页抓取 | BeautifulSoup |解析表

sql - 如何根据列的最大值+分组从MySQL中选择行

mysql - 在mysql中使用group by聚合5分钟时间戳间隔

python - python中的嵌套变量

python - 导入错误 : No module named 'pandas'