这是我的输入数据框:
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
我需要基于ID
列生成'type'
列。我有两种类型'a'
和'b'
..只要是'a'
我想增加ID
。如果为'b'
,请保留前一个'a'
ID
。如何在Pandas数据框中执行此操作?
答案 0 :(得分:5)
您可以计算布尔序列的累积总和,以指示序列何时等于值:
df['id'] = df['type'].eq('a').cumsum()
答案 1 :(得分:1)
我尝试过这种方式,显然@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
答案 2 :(得分:0)
如果您的DataFrame为df
:
df[df=='a'].expanding().count()