Количество выполняемых операций в pandas df

#python #pandas #dataframe #count #cumulative-sum

#питон #панды #фрейм данных #граф #кумулятивная сумма

Вопрос:

Я пытаюсь вернуть текущий счетчик в отдельный column в a pandas df . Ниже приведены два columns df примера. Когда целое число увеличивается, я хочу вернуть увеличенное количество в отдельный column , который относится к Val Column .

 import pandas as pd

d = ({
    'Val' : ['Foo','Bar','Foo','Foo','Foo','Bar','Foo','Bar'],
    'Int' : [0,1,2,2,3,4,4,5],
    }) 

df = pd.DataFrame(d)
 

Вон:

    Val  Int
0  Foo    0
1  Bar    1
2  Cat    2
3  Foo    2
4  Foo    3
5  Bar    4
6  Foo    4
7  Bar    5
 

Когда я пытаюсь вернуть количество выполняемых операций, он просто возвращает NaN

 for val in ['Foo','Bar']:
    cond = df.Val.eq(val) amp; df.Int.eq(int)
    df.loc[cond, 'Count_'   val] = cond[cond].cumsum()
 

Предполагаемый результат:

    Val  Int  Foo_Count  Bar_Count
0  Foo    0          0          0
1  Bar    1          0          1
2  Foo    2          1          1
3  Foo    2          1          1
4  Foo    3          2          1
5  Bar    4          2          2
6  Foo    4          2          2
7  Bar    5          2          3
 

Ответ №1:

Используя get_dummies с cumsum

 s=df.Val.str.get_dummies().cumsum().add_suffix('_count')
s
Out[742]: 
   Bar_count  Foo_count
0          0          1
1          1          1
2          1          2
3          1          3
4          1          4
5          2          4
6          2          5
7          3          5
df=pd.concat([df,s],axis=1)