QST: Is there a function in pandas to do this composite time-indexed merge operation?
### 

- [X] I have searched the [[pandas] tag](https://stackoverflow.com/questions/tagged/pandas) on StackOverflow for similar questions.

- [X] I have asked my usage related question on [StackOverflow](https://stackoverflow.com).


### Link to question on StackOverflow

https://stackoverflow.com/q/69348014/7317733

### Question about pandas

I have dataframes looking like this,

df1 :
```
                          X1   X2   X3    X4
2021-02-23 15:44:20.100  NaN    0    1   Nan
2021-02-23 15:44:20.300  NaN    0    1   Nan
2021-02-23 15:44:20.500  NaN    0    1   Nan
2021-02-23 15:44:20.700  NaN    0    1   Nan
2021-02-23 15:44:20.900  NaN    0    1   Nan
2021-02-23 15:44:21.100  NaN    0    1   Nan
2021-02-23 15:44:21.300  NaN    0    1   Nan
2021-02-23 15:44:21.500  NaN    0    1   Nan
2021-02-23 15:44:21.700  NaN    0    1   Nan
2021-02-23 15:44:21.900  NaN    0    1   Nan
```

df2 :
```
                          X1   X2   X3    X4
2021-02-23 15:44:20.000    0    0    1   Nan
2021-02-23 15:44:20.200    3    0    1   Nan
2021-02-23 15:44:20.400  NaN    0    1   Nan
2021-02-23 15:44:20.600  NaN    0    1   Nan
2021-02-23 15:44:20.800  NaN    0    1     3
2021-02-23 15:44:21.000  NaN    0    1   Nan
2021-02-23 15:44:21.200  NaN    0    1     3
2021-02-23 15:44:21.400  NaN    0    1   Nan
2021-02-23 15:44:21.600  NaN    0    1     4
2021-02-23 15:44:21.800  NaN    0    1   Nan
2021-02-23 15:44:22.000  NaN    0    1   Nan
2021-02-23 15:44:22.200  NaN    0    1   Nan
2021-02-23 15:44:22.400  NaN    0    1   Nan
2021-02-23 15:44:22.600  NaN    0    1   Nan

```
I want to perform a merge/join/concatenate operation on the values from columns of the left DataFrame (df1) to the Right Dataframe (df2). This would be searching for a row wise timedelta in the time index and replacing NaNs which might already be there... 

Intuition: Kinda like a merge_asof but not creating _x and _y columns, instead replacing the values from the left df to the right.

Please note: 
- The columns in the right dataframe are always exactly equal to the columns on the left dataframe.
- In the intuition.. `pandas.Dataframe.merge_asof()` does a left join but my case is different it is more like an outer join.
    
Resulting joined/merged DataFrame:
```
                          X1   X2   X3    X4
2021-02-23 15:44:20.100    0    0    1   Nan
2021-02-23 15:44:20.300    3    0    1   Nan
2021-02-23 15:44:20.500  NaN    0    1   Nan
2021-02-23 15:44:20.700  NaN    0    1   Nan
2021-02-23 15:44:20.900  NaN    0    1     3
2021-02-23 15:44:21.100  NaN    0    1   Nan
2021-02-23 15:44:21.300  NaN    0    1     3
2021-02-23 15:44:21.500  NaN    0    1   Nan
2021-02-23 15:44:21.700  NaN    0    1     4
2021-02-23 15:44:21.900  NaN    0    1   Nan
2021-02-23 15:44:22.000  NaN    0    1   Nan
2021-02-23 15:44:22.200  NaN    0    1   Nan
2021-02-23 15:44:22.400  NaN    0    1   Nan
2021-02-23 15:44:22.600  NaN    0    1   Nan
```

## What I have tried: 
1. One method i tried is to resample the df1 and df2 with the frequency set as 'T' which basically ensures both the data-frames would have same keys if any. Then performing joins would be straight forward. 
  - Problem: Downsampling a df in pandas drops NaN rows by default and i am not aware of a technique to prevent it. I do not want to drop any data.. just replace.
2. merge_asof or traditional merges create duplicate columns with suffixes, which i do not want.
3. join and append just adds the rows of the df2 to df1 which is also not what i want.

## What i propose might work:
1. checking the second Dataframe manually for a row mathcing the timedelta and iterate over every row. This also is infeasible in my case as the dataframes in question are very large.

```
df1.shape -> (12200317 rows x 41 columns)
df2.shape -> (10000023 rows x 41 columns) 
```
I also have multiple dataframes to go through. (approximately 50)

If there are any duplicates of this question .. I couldn't find one.. 
Thanks for any help. :)
 