hope you’re doing well . i tried counting green color row after another green colored row in the table below In [1]: df = pd.DataFrame([[green], [red], [red]], columns=[‘A’])
the code i tried to count greengreen:
JavaScript
x
5
1
for index,row in data.iterrows():
2
if finalData['Color'].loc[i]=='green' & finalData['Color'].loc[i+1]=='green':
3
greengreen+=1
4
i+=1
5
but it didn’t work,hope you can help. note: i’m new to data science
Advertisement
Answer
You can use:
JavaScript
1
5
1
# is the color green?
2
m = df['color'].eq('green')
3
# count the matches that precede another match
4
greengreen = (m&m.shift()).sum()
5
As a one-liner (python ≥ 3.8):
JavaScript
1
2
1
greengreen = ((m:=df['color'].eq('green'))&m.shift()).sum()
2
example input:
JavaScript
1
2
1
df = pd.DataFrame({'color': ['green', 'green', 'green', 'red', 'green', 'red', 'green', 'green']})
2
output: 3