计算数据框中列中的组
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
我有一个数据框 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