I have two data that looks like below
saved_info = [datetime.datetime(2023, 7, 4, 23, 18, 22, 113476), 't55643', 'ab$ff$55'),
datetime.datetime(2023, 7, 4, 23, 26, 22, 113476), 't55643', '5b$ff$15'),
datetime.datetime(2023, 7, 4, 23, 27, 22, 133470), 't55643', 'ab$ff$55')
]
new_info = [('t55643', 'ab$ff$55', 44),
('t55643', 'be$qf$34', 33)
]
I load them into pandas as follows
df1 = pd.DataFrame(new_info)
df1.columns = ["tid", "cid", "val"]
df2 = pd.DataFrame(saved_info)
df2.columns = ["modified_at", "tid", "cid"]
So the data frames look like below
df1
tid cid val
0 t55643 ab$ff$55 44
1 t55643 be$qf$34 33
df2
modified_at tid cid
0 datetime.datetime(2023, 7, 4, 23, 18, 22, 113476) t55643 ab$ff$55
1 datetime.datetime(2023, 7, 4, 23, 26, 22, 112471) t55643 5b$ff$15
2 datetime.datetime(2023, 7, 4, 23, 27, 22, 133470) t55643 ab$ff$55
Now I want to get rows from df1
that have common cid
value with df2
and modified_at
value of df2
should be greater than 15mins
So lets say datetime right now is 2023-07-04 23:36:38
So accordingly the final result of df1
should be
df1 (final)
tid cid val
0 t55643 ab$ff$55 44
As you can see the cid
value of first row of df1
matches with the first row of df2
and also the time diff of modified_at
value of first row of df2
with current time is greater than 15 mins
.
Now I can get rows of df1
that share common value on cid
column with df2
by doing something like below
common = df1.merge(df2, on=['cid'])
df1_final = df1[(df1.cid.isin(common.cid))]
For comparing time diff between rows of two data frames, I found a stackoverflow answer https://stackoverflow.com/a/46966942/5550284
But in my case I need to check a column value against the current UTC time and furthermore I don't know how do I chain these two conditions together.
Can someone help me?