这是我的输入数据帧:
type
a
a
a
a
a
b
b
a
a
a
这是我的预期输出:
type, id
a , 1
a , 2
a , 3
a , 4
a , 5
b , 5
b , 5
a , 6
a , 7
a , 8
我需要在'type'
列的基础上生成ID
列。我有两种类型'a'
&'b'
。。只要是CCD_ 5,我就想递增CCD_。如果是'b'
,则保留以前的'a'
ID
。如何在Pandas数据帧中做到这一点?
您可以计算布尔级数的累积和,指示级数何时等于值:
df['id'] = df['type'].eq('a').cumsum()
我试过这种方法,显然@jpp的答案是最酷的。但我这样做只是为了给大家一个想法。
df=pd.DataFrame({'col1':['a','a','a','a','a','b','b','a','a','a']})
df['type']= df.groupby('col1').cumcount()+1
df.loc[df['col1']=='b','type']=np.NaN
df['type']=df['type'].ffill()
print df
O/p
col1 type
0 a 1.0
1 a 2.0
2 a 3.0
3 a 4.0
4 a 5.0
5 b 5.0
6 b 5.0
7 a 6.0
8 a 7.0
9 a 8.0
如果您的DataFrame是df
:
df[df=='a'].expanding().count()