Панды Слияние двух датафреймов с объединением по дате между датами

Вы отправляете два нулевых значения. Когда вы используете новый {}, вы создаете новый объект. Вы должны не только определять имена индексов, но и значения.

return RedirectToAction("Index", new { filter = filter, checkedRecords = checkedRecords });
0
задан Keithx 17 March 2019 в 20:49
поделиться

2 ответа

Я решил проблему, используя обходной путь с разбивкой по времени на столбцы date и hour. Может быть, не слишком причудливый, но это решает сделку и довольно просто:

import pandasql as ps

df_1['date'] = [d.date() for d in df_1['time']]
df_1['time'] = df_1['time'].dt.round('H').dt.hour

df_2['date'] = [d.date() for d in df_2['time']]
df_2['time'] = df_2['time'].dt.round('H').dt.hour

sqlcode = '''
select *
from df_1
inner join df_2 on df_1.time=df_2.time and df_1.date=df_2.date
'''

newdf = ps.sqldf(sqlcode,locals())
0
ответ дан Keithx 17 March 2019 в 20:49
поделиться

Это проблема pd.merge_asof, я создаю двойное число дат в df2, чтобы показать, какую дату мы объединяем из df2

#df1.Date=pd.to_datetime(df1.Date)
#df2.Date=pd.to_datetime(df2.Date)
yourdf=pd.merge_asof(df1,df2.assign(keydate=df2.Date),on='Date',direction='forward')
yourdf
                     Date         ...                     keydate
0 2018-08-31 22:59:47.980         ...         2018-08-31 23:00:00
1 2018-08-31 22:59:49.979         ...         2018-08-31 23:00:00
2 2018-08-31 22:59:51.979         ...         2018-08-31 23:00:00
3 2018-08-31 22:59:53.979         ...         2018-08-31 23:00:00
4 2018-08-31 22:59:55.979         ...         2018-08-31 23:00:00
5 2018-08-31 22:59:57.979         ...         2018-08-31 23:00:00
[6 rows x 4 columns]
0
ответ дан Wen-Ben 17 March 2019 в 20:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: