Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 熊猫按递增顺序对组中的行进行编号_Python 3.x_Pandas_Group By_Pandas Groupby_Rank - Fatal编程技术网

Python 3.x 熊猫按递增顺序对组中的行进行编号

Python 3.x 熊猫按递增顺序对组中的行进行编号,python-3.x,pandas,group-by,pandas-groupby,rank,Python 3.x,Pandas,Group By,Pandas Groupby,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”

给定以下数据帧:

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.rank函数。 这里是工作示例

df=pd.DataFrame({'C1':['a','a','a','b','b'],'C2':[1,2,3,4,5]})
df
C1 C2
a 1
a 2
a 3
b 4
b 5
df[“RANK”]=df.groupby(“C1”)[“C2”].RANK(method=“first”,升序=True)
df
C1-C2秩
a 11
a 2 2
a 3 3
b 4 1
b 5 2

由@Gokulakrishnan回答的
rank()
函数在处理分组列值为数字的情况时确实更好。下面是一个反问句,为什么要通过阅读这些文档来找到这样的解决方案如此困难?有时候,要想弄明白如何做最简单的事情,需要花很长时间。
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