【问题标题】:Pandas count occurrence within column on condition being satisfiedPandas 在满足条件的情况下计算列内的出现次数
【发布时间】:2016-12-22 12:59:11
【问题描述】:

我正在尝试通过分组来计数。请参阅下面的输入和输出。

输入:

df = pd.DataFrame()

df['col1'] = ['a','a','a','a','b','b','b']
df['col2'] = [4,4,5,5,6,7,8]
df['col3'] = [1,1,1,1,1,1,1]

输出:

   col4
0     2
1     2
2     2
3     2
4     1
5     1
6     1

尝试通过以下方式玩弄 groupby 和 count:

s = df.groupby(['col1','col2'])['col3'].sum()

我得到的输出是

a     4       2
      5       2
b     6       1
      7       1
      8       1

如何将它添加为主 df 上的列。

谢谢你!

【问题讨论】:

    标签: pandas dataframe count group-by size


    【解决方案1】:

    使用transformlensize

    df['count'] = df.groupby(['col1','col2'])['col3'].transform(len)
    print (df)
      col1  col2  col3  count
    0    a     4     1      2
    1    a     4     1      2
    2    a     5     1      2
    3    a     5     1      2
    4    b     6     1      1
    5    b     7     1      1
    6    b     8     1      1
    

    df['count'] = df.groupby(['col1','col2'])['col3'].transform('size')
    print (df)
      col1  col2  col3  count
    0    a     4     1      2
    1    a     4     1      2
    2    a     5     1      2
    3    a     5     1      2
    4    b     6     1      1
    5    b     7     1      1
    6    b     8     1      1
    

    col3列不是必须的,你可以使用col1col2

    df = pd.DataFrame()
    
    df['col1'] = ['a','a','a','a','b','b','b']
    df['col2'] = [4,4,5,5,6,7,8]
    
    df['count'] = df.groupby(['col1','col2'])['col1'].transform(len)
    df['count1'] = df.groupby(['col1','col2'])['col2'].transform(len)
    print (df)
      col1  col2 count  count1
    0    a     4     2       2
    1    a     4     2       2
    2    a     5     2       2
    3    a     5     2       2
    4    b     6     1       1
    5    b     7     1       1
    6    b     8     1       1
    

    【讨论】:

    • 轰隆隆!这就是我想要没有 col3 并且只使用它来使用“总和”感谢 vm!
    【解决方案2】:

    试试这个,

    df['count'] = df.groupby(['col1','col2'])['col3'].transform(sum)
    print (df)
      col1  col2  col3  count
    0    a     4     1    2
    1    a     4     1    2
    2    a     5     1    2
    3    a     5     1    2
    4    b     6     1    1
    5    b     7     1    1
    6    b     8     1    1
    

    【讨论】:

      猜你喜欢
      • 2021-08-19
      • 2021-12-05
      • 1970-01-01
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-11
      • 1970-01-01
      • 2016-05-09
      相关资源
      最近更新 更多