Reputation: 85
Solution for a single column is already provided here: Pandas: Check if column value is smaller than any previous column value.
However, my dataset consists of many columns and I don't want to brute force many codes.
Example dataset:
c d e
0 3 5 8
1 1 5 8
2 5 6 8
3 6 7 8
4 2 1 9
5 9 3 3
Desired result:
c d e c_diff d_diff e_diff
0 3 5 8 False False False
1 1 5 8 True False False
2 5 6 8 False False False
3 6 7 8 False False False
4 2 1 9 True True False
5 9 3 3 False False True
Is there any way to perform this task with simple lines of Python/Panda code?
Upvotes: 2
Views: 304
Reputation: 30930
We can use DataFrame.diff
with DataFrame.lt
df.diff().lt(0).add_suffix('_diff')
c_diff d_diff e_diff
0 False False False
1 True False False
2 False False False
3 False False False
4 True True False
5 False False True
Upvotes: 3
Reputation: 150785
You can operate on the whole dataframe:
df.lt(df.shift()).add_suffix('_diff')
gives you
c_diff d_diff e_diff
0 False False False
1 True False False
2 False False False
3 False False False
4 True True False
5 False False True
And you can join:
df.join(df.lt(df.shift()).add_suffix('_diff'))
which gives:
c d e c_diff d_diff e_diff
0 3 5 8 False False False
1 1 5 8 True False False
2 5 6 8 False False False
3 6 7 8 False False False
4 2 1 9 True True False
5 9 3 3 False False True
Upvotes: 2