计算数据框中列中的组
Posted
技术标签:
【中文标题】计算数据框中列中的组【英文标题】:Counting groups in columns in dataframe 【发布时间】:2021-03-26 02:38:03 【问题描述】:我有一个数据框 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
我想对另一列“匹配”的“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】:如果每个组都可以通过以1
结尾来定义,则可以使用Series.str.endswith
和Series.cumsum
并传递给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
【讨论】:
非常感谢您的解决方案【参考方案2】:你可以简单地提取数字:
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
【讨论】:
以上是关于计算数据框中列中的组的主要内容,如果未能解决你的问题,请参考以下文章