【问题标题】:Cumulative count when two values match pandas两个值匹配 pandas 时的累积计数
【发布时间】:2018-12-05 19:29:26
【问题描述】:

我正在尝试创建一个新的Column,它基于单独的columns 中的值显示cumulative count

所以对于下面的代码,我正在尝试基于CauseAnswer Columns 创建两个新列。所以对于Column Answer 中的值,如果In 位于Column Cause 中,我想在新列中提供累积计数。

import pandas as pd

d = ({
    'Cause' : ['In','','','In','','In','In'],
    'Answer' : ['Yes','No','Maybe','No','Yes','No','Yes'],
    })

df = pd.DataFrame(d)

输出:

  Answer Cause
0    Yes    In
1     No      
2  Maybe      
3     No    In
4    Yes      
5     No    In
6    Yes    In

预期输出:

  Answer Cause Count_No Count_Yes
0    Yes    In                  1
1     No                         
2  Maybe                         
3     No    In        1          
4    Yes                         
5     No    In        2          
6    Yes    In                  2

我尝试了以下方法,但出现错误。

df['cumsum'] = df.groupby(['Answer'])['Cause'].cumsum()

【问题讨论】:

    标签: python pandas group-by count cumsum


    【解决方案1】:

    这是一种方法-

    for val in ['Yes', 'No']:
        cond = df.Answer.eq(val) & df.Cause.eq('In')
        df.loc[cond, 'Count_' + val] = cond[cond].cumsum()
    
    df
    #  Cause Answer  Count_Yes  Count_No
    #0    In    Yes        1.0       NaN
    #1           No        NaN       NaN
    #2        Maybe        NaN       NaN
    #3    In     No        NaN       1.0
    #4          Yes        NaN       NaN
    #5    In     No        NaN       2.0
    #6    In    Yes        2.0       NaN
    

    【讨论】:

      【解决方案2】:

      没有 for 循环 :-)

      s=df.loc[df.Cause=='In'].Answer.str.get_dummies()
      pd.concat([df,s.cumsum().mask(s!=1,'')],axis=1).fillna('')
      Out[62]: 
        Answer Cause No Yes
      0    Yes    In      1
      1     No             
      2  Maybe             
      3     No    In  1    
      4    Yes             
      5     No    In  2    
      6    Yes    In      2
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-12-18
        • 2017-05-15
        • 2018-12-27
        • 2018-12-04
        • 2017-01-05
        • 2012-04-19
        • 2020-03-01
        • 2019-07-08
        相关资源
        最近更新 更多