【问题标题】: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

任何帮助将不胜感激。提前谢谢你。

【问题讨论】:

    标签: pandas dataframe count pandas-groupby cumsum


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-04
      • 2020-05-13
      • 1970-01-01
      相关资源
      最近更新 更多