Как добавить столбец в существующий DataFrame с несовпадающим временем? - PullRequest
0 голосов
/ 10 марта 2020

В существующем DataFrame;

2019-12-02 | 1.000000 
2019-12-04 | 1.020100
2019-12-05 | 1.030301
2019-12-06 | 1.040604
2019-12-09 | 1.051010
2019-12-10 | 1.061520

Я хочу добавить новые столбцы на основе существующего DF или TS с несовпадающим индексом;

2019-12-04  00:00:00 | A
2019-12-05  15:40:00 | B
2019-12-07  00:30:00 | C
2019-12-10  15:00:00 | D

с результатом;

2019-12-02 | 1.000000 NaN
2019-12-04 | 1.020100 A
2019-12-05 | 1.030301 B
2019-12-06 | 1.040604 C
2019-12-09 | 1.051010 NaN
2019-12-10 | 1.061520 D

Интервал в существующем фрейме данных также может быть меньше 24 часов.

Thx!

1 Ответ

2 голосов
/ 10 марта 2020

Использование merge_asof:

df = pd.merge_asof(df1, 
                   df2, 
                   left_index=True, 
                   right_index=True, 
                   tolerance=pd.Timedelta(24, 'H'), 
                   direction='forward')
print (df)
                   A    B
2019-12-02  1.000000  NaN
2019-12-04  1.020100    A
2019-12-05  1.030301    B
2019-12-06  1.040604  NaN
2019-12-09  1.051010  NaN
2019-12-10  1.061520    D

df = pd.merge_asof(df1, 
                   df2, 
                   left_index=True, 
                   right_index=True, 
                   tolerance=pd.Timedelta(25, 'H'), 
                   direction='forward')
print (df)
                   A    B
2019-12-02  1.000000  NaN
2019-12-04  1.020100    A
2019-12-05  1.030301    B
2019-12-06  1.040604    C
2019-12-09  1.051010  NaN
2019-12-10  1.061520    D
...