我试图创建一个列,当它沿着行组向下移动一列并基于另一列时,该列会递增计数.
此外,如果其中一个状态为空(如在空字符串中),它将被忽略,并重复上一个状态的空白计数.
所以我有这些数据
car status
0 audi False
1 audi False
2 audi False
3 audi True
4 bmw False
5 bmw ''
6 bmw False
7 bmw True
8 bmw False
9 lexus True
10 lexus True
11 lexus True
我想添加一个列,当它为每一个car
计数时,计算有多少连续的False
处于状态,当有一个True
重新开始时,如果有另一个False
或另一个car
,则重置
car status counter
0 audi False 1
1 audi False 2
2 audi False 3
3 audi True 0
4 bmw False 1
5 bmw '' 1
5 bmw False 2
6 bmw True 0
7 bmw False 1
9 lexus True 0
10 lexus True 0
11 lexus False 1
我正在try 这个,但它会随着汽车的增加而增加
import pandas as pd
data = [['audi', False],
['audi', False],
['audi', False],
['audi', True],
['bmw', False],
['bmw', False],
['bmw', False],
['bmw', True],
['bmw', False],
['lexus', True],
['lexus', True],
['lexus', False]]
df = pd.DataFrame(data=data, columns=['car', 'status'])
df['count'] = df.groupby('car')['status'].transform(lambda x: x.ne(x.shift()).cumsum())
print(df)