给定以下数据框:

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-3.x - Pandas 按递增顺序编号组内的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37997668/

10-15 21:25
查看更多