运行 依靠 pandas df
Running count on a pandas df
我正在尝试 return 运行 计数到 pandas
df
中的单独 column
。下面的df
中有两个columns
。当整数增加时,我想 return 增加一个相对于 Val
Column
.
的单独 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
当我尝试 return 一个 运行 计算它只是 returns 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
通过使用 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)
我正在尝试 return 运行 计数到 pandas
df
中的单独 column
。下面的df
中有两个columns
。当整数增加时,我想 return 增加一个相对于 Val
Column
.
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
当我尝试 return 一个 运行 计算它只是 returns 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
通过使用 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)