Заполнение значений из другого фрейма данных при сравнении даты и времени - PullRequest
0 голосов
/ 07 мая 2018

У меня есть два кадра данных ниже природы:

df1
Index    Date          NextEntry_Date
0        2018-01-25
1        2018-02-25
2        2018-03-25
3        2018-04-25
4        2018-05-25
5        2018-06-25
6        2018-07-25
7        2018-08-25
8        2018-09-25
9        2018-10-25


df2
Index    Date 
2000    2018-07-20
2500    2019-07-20
2800    2020-07-20

Я хочу заполнить столбец NextEntry_Date так, чтобы df1 выглядел следующим образом

     df1
Index    Date          NextEntry_Date
0        2018-01-25    2018-07-20
1        2018-02-25    2018-07-20
2        2018-03-25    2018-07-20
3        2018-04-25    2018-07-20
4        2018-05-25    2018-07-20
5        2018-06-25    2018-07-20
6        2018-07-25    **2019-07-20**
7        2018-08-25    2019-07-20
8        2018-09-25    2019-07-20
9        2018-10-25    2019-07-20

Подскажите, пожалуйста ... Есть ли способ, кроме написания циклов?

1 Ответ

0 голосов
/ 07 мая 2018

Это один из способов использования pandas.cut:

# convert columns to datetime, if not already done
df1['Date'] = pd.to_datetime(df1['Date'])
df2['Date'] = pd.to_datetime(df2['Date'])

# get bins as list, adding one to the top for the earlier dates
bins = [pd.to_datetime('07-20-2017')] + df2['Date'].tolist()

# use pandas.cut to map bins with labels
df1['NextEntry_Date'] = pd.cut(df1['Date'], bins, labels=df2['Date'])

print(df1)

   Index       Date NextEntry_Date
0      0 2018-01-25     2018-07-20
1      1 2018-02-25     2018-07-20
2      2 2018-03-25     2018-07-20
3      3 2018-04-25     2018-07-20
4      4 2018-05-25     2018-07-20
5      5 2018-06-25     2018-07-20
6      6 2018-07-25     2019-07-20
7      7 2018-08-25     2019-07-20
8      8 2018-09-25     2019-07-20
9      9 2018-10-25     2019-07-20
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...