计算数据框中列中的组

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.endswithSeries.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

【讨论】:

以上是关于计算数据框中列中的组的主要内容,如果未能解决你的问题,请参考以下文章

动态填充pyspark数据框中列中的行

在 PySpark 数据框中的组中的列上应用函数

做某事。如果在熊猫数据框中列中的值等于 1

什么函数允许我根据R中列中的值从数据框中的列中提取数据?

使用Python中的循环一一删除数据框中列中具有最小值的观察值

如何根据python中列中的变量位置计算行数