#python #pandas #datetime #join #merge
#python #pandas #дата-время #Присоединиться #объединить
Вопрос:
У меня есть два df :
date=pd.date_range(start = '8/1/2020 7:00:00', end ='8/1/2020 7:15:00',freq='min')
df1=pd.DataFrame({'date':date})
и
df2=pd.DataFrame({'date':[dt.datetime(2020,8,1,7,0),dt.datetime(2020,8,1,7,6),dt.datetime(2020,8,1,7,12)],'count':[5,6,1]})
Я хочу объединить df2 в df1, следуя шаблону в df3
:
date count
0 2020-01-08 07:00:00 5
1 2020-01-08 07:01:00 5
2 2020-01-08 07:02:00 5
3 2020-01-08 07:03:00 5
4 2020-01-08 07:04:00 5
5 2020-01-08 07:05:00 5
6 2020-01-08 07:06:00 6
7 2020-01-08 07:07:00 6
8 2020-01-08 07:08:00 6
9 2020-01-08 07:09:00 6
10 2020-01-08 07:10:00 6
11 2020-01-08 07:11:00 6
12 2020-01-08 07:12:00 1
13 2020-01-08 07:13:00 1
14 2020-01-08 07:14:00 1
15 2020-01-08 07:15:00 1
Есть ли у PANDAS функция для этого?
Спасибо!
Комментарии:
1. Это опечатка! Я изменяю это
Ответ №1:
date=pd.date_range(start = '1/8/2020 7:00:00', end ='1/8/2020 7:15:00',freq='min')
df1=pd.DataFrame({'date':date})
df2=pd.DataFrame({'date':[dt.datetime(2020,1,8,7,0),dt.datetime(2020,1,8,7,6),dt.datetime(2020,1,8,7,12)],'count':[5,6,1]})
#I've corrected your input df2, months<-> days position
df3= df2.merge(df1,on='date',how='outer')
df3=df3.sort_values(by='date').ffill()
print(df3)
date count
0 2020-01-08 07:00:00 5.0
3 2020-01-08 07:01:00 5.0
4 2020-01-08 07:02:00 5.0
5 2020-01-08 07:03:00 5.0
6 2020-01-08 07:04:00 5.0
7 2020-01-08 07:05:00 5.0
1 2020-01-08 07:06:00 6.0
8 2020-01-08 07:07:00 6.0
9 2020-01-08 07:08:00 6.0
10 2020-01-08 07:09:00 6.0
11 2020-01-08 07:10:00 6.0
12 2020-01-08 07:11:00 6.0
2 2020-01-08 07:12:00 1.0
13 2020-01-08 07:13:00 1.0
14 2020-01-08 07:14:00 1.0
15 2020-01-08 07:15:00 1.0
Ответ №2:
Запустите просто: pd.merge_asof(df1, df2, on='date')