熊猫df的运行计数

时间:2019-04-19 02:17:50

标签: python pandas dataframe count cumulative-sum

我试图将运行计数返回到column 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's

for val in ['Foo','Bar']:
    cond = df.Val.eq(val) & 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 个答案:

答案 0 :(得分:4)

通过将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)