I have a dataframe, which looks something like this (number of columns and rows can differ):
0 1 2
2015-01-02 ISIN1 ISIN2 ISIN3
2015-05-04 ISIN4 ISIN2 ISIN5
2015-09-01 ISIN4 ISIN5 ISIN6
2016-01-04 ISIN7 ISIN8 ISIN2
2016-05-02 ISIN9 ISIN7 ISIN10
2016-09-01 ISIN11 ISIN12 ISIN13
2017-01-02 ISIN11 ISIN12 ISIN14
2017-05-02 ISIN12 ISIN11 ISIN15
2017-09-01 ISIN12 ISIN16 ISIN17
2018-01-02 ISIN16 ISIN11 ISIN18
2018-05-02 ISIN4 ISIN8 ISIN7
2018-09-03 ISIN12 ISIN7 ISIN19
2019-01-02 ISIN20 ISIN21 ISIN22
2019-05-02 ISIN13 ISIN7 ISIN8
2019-09-02 ISIN23 ISIN24 ISIN15
2020-01-02 ISIN25 ISIN23 ISIN24
2020-05-04 ISIN24 ISIN26 ISIN4
My task is now to compare each value of each row with each value of the row before. I want to know if the value is in the row before or not. I want to get two dataframes as result.
Keep the values which are not in the row before:
0 1 2 2015-01-02 ISIN1 ISIN2 ISIN3 2015-05-04 ISIN4 ISIN5 2015-09-01 ISIN6 2016-01-04 ISIN7 ISIN8 ISIN2 2016-05-02 ISIN9 ISIN10 2016-09-01 ISIN11 ISIN12 ISIN13 2017-01-02 ISIN14 2017-05-02 ISIN15 2017-09-01 ISIN16 ISIN17 2018-01-02 ISIN11 ISIN18 2018-05-02 ISIN4 ISIN8 ISIN7 2018-09-03 ISIN12 ISIN19 2019-01-02 ISIN20 ISIN21 ISIN22 2019-05-02 ISIN13 ISIN7 ISIN8 2019-09-02 ISIN23 ISIN24 ISIN15 2020-01-02 ISIN25 2020-05-04 ISIN26 ISIN4Keep the values which are in the row before:
0 1 2 2015-01-02 2015-05-04 ISIN2 2015-09-01 ISIN4 ISIN5 2016-01-04 2016-05-02 ISIN7 2016-09-01 2017-01-02 ISIN11 ISIN12 2017-05-02 ISIN12 ISIN11 2017-09-01 ISIN12 2018-01-02 ISIN16 2018-05-02 2018-09-03 ISIN7 2019-01-02 2019-05-02 2019-09-02 2020-01-02 ISIN23 ISIN24 2020-05-04 ISIN24
What I've explored so far:
for i in range(len(df)):
print(np.isin(df.values[i, :], df.shift().values[i, :]))
creates this:
[False False False]
[False True False]
[ True True False]
[False False False]
[False True False]
[False False False]
[ True True False]
[ True True False]
[ True False False]
[ True False False]
[False False False]
[False True False]
[False False False]
[False False False]
[False False False]
[False True True]
[ True False False]
With appending this values to a list I would be able to create a new dataframe. But I think there must be a better way.
Does anyone have a clue how to do it without iterating through the dataframe?
Thank you very much!
Best regards, nepy