在 pandas df 上运行计数

jon*_*boy 1 python count dataframe cumulative-sum pandas

我正在尝试将运行计数返回columnpandas 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)
Run Code Online (Sandbox Code Playgroud)

出去:

   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
Run Code Online (Sandbox Code Playgroud)

当我尝试返回运行计数时,它只返回 NaN

for val in ['Foo','Bar']:
    cond = df.Val.eq(val) & df.Int.eq(int)
    df.loc[cond, 'Count_' + val] = cond[cond].cumsum()
Run Code Online (Sandbox Code Playgroud)

预期输出:

   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
Run Code Online (Sandbox Code Playgroud)

WeN*_*Ben 5

通过使用get_dummiescumsum

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)
Run Code Online (Sandbox Code Playgroud)