How to count number of increases/decreases across a row in a dataframe

Viewed 53

I have a df with time series data that I need to count the number of increases/decreases across a row. For example:

yr      value1   value2  value3  value4  #increases #decreases
1976    1        2       1       4       ?          ?

#increases in this case would be 2 and #decreases would be 1. What would be the best way to do this?

1 Answers

You can use diff to subtract each column from the previous column. Negative values imply a decrease, while positive values imply an increase. Then you can just count them directly.

diff_df = df.diff(axis=1)
df['increases'] = (diff_df > 0).sum(axis=1)
df['decreases'] = (diff_df < 0).sum(axis=1)

Here (diff_df > 0) return true/false dataframes, so summing them is just counting the "true" values - where value is positive, aka increasing.

Related