计算数据框中列中的组

Counting groups in columns in dataframe

我有一个数据框 df:

     prds
0    E01
1    E02
2    E03
3    E04
4    E01
5    E02
6    E03
7    E04
8    F01
9    F02
10   F03
11   F04
12   F05

我想在另一列 'match' 上对列 'prds' 中的每个组进行计数,因此:

    prds  match
0    E01    1
1    E02    2
2    E03    3
3    E04    4
4    E01    1
5    E02    2
6    E03    3
7    E04    4
8    F01    1
9    F02    2
10   F03    3
11   F04    4
12   F05    5

如有任何帮助,我们将不胜感激。提前致谢。

如果每个组都可以通过以 1 结尾的值定义,则可以使用 Series.str.endswith with Series.cumsum and pass to GroupBy.cumcount:

df['match'] = df.groupby(df['prds'].str.endswith('1').cumsum()).cumcount() + 1
print (df)
   prds  match
0   E01      1
1   E02      2
2   E03      3
3   E04      4
4   E01      1
5   E02      2
6   E03      3
7   E04      4
8   F01      1
9   F02      2
10  F03      3
11  F04      4
12  F05      5

您可以简单地提取数字:

df['match'] = df['prds'].str.extract('(\d+)').astype('int')

输出:

   prds  match
0   E01      1
1   E02      2
2   E03      3
3   E04      4
4   E01      1
5   E02      2
6   E03      3
7   E04      4
8   F01      1
9   F02      2
10  F03      3
11  F04      4
12  F05      5