У меня есть два набора данных, один из которых содержит данные о качестве воздуха, а другой - данные о погоде, каждый из которых содержит столбец с именем «dt» для даты и времени.Однако эти времена не совпадают точно.Я хотел бы присоединиться к этим таблицам, чтобы данные о качестве воздуха сохранялись, а самое близкое время данных о погоде сопоставлялось и объединялось.
df_aq:
dt Latitude Longitude ... Speed_kmh PM2.5 PM10
0 11/20/2018 12:16 33.213922 -97.151055 ... 0.35 16.0 86.1
1 11/20/2018 12:16 33.213928 -97.151007 ... 5.01 16.0 86.1
2 11/20/2018 12:16 33.213907 -97.150953 ... 5.27 16.0 86.1
3 11/20/2018 12:16 33.213872 -97.150883 ... 5.03 16.0 86.1
...
364 11/20/2018 12:46 33.209462 -97.148623 ... 0.00 2.8 6.3
365 11/20/2018 12:46 33.209462 -97.148623 ... 0.00 2.8 6.3
366 11/20/2018 12:46 33.209462 -97.148623 ... 0.00 2.8 6.3]
df_weather:
USAF WBAN dt DIR SPD ... PCP01 PCP06 PCP24 PCPXX
0 722589 3991 11/20/2018 0:53 360 6 ... 0 ***** ***** *****
1 722589 3991 11/20/2018 1:53 350 6 ... 0 ***** ***** *****
2 722589 3991 11/20/2018 2:53 310 3 ... 0 ***** ***** *****
3 722589 3991 11/20/2018 3:53 330 5 ... 0 ***** ***** *****
4 722589 3991 11/20/2018 4:53 310 6 ... 0 ***** ***** *****
df_aq варьируется от 12: 16 до 12: 46, и df_weather каждый час имеет данные на отметке 53 минуты.Поэтому самые близкие времена были бы 11:53 и 12:53, поэтому я хотел бы, чтобы эти два раза и последующие данные о погоде соответствующим образом слились со всеми данными в df_aq
Я пытался поэкспериментировать с iloc и Index.get_loc, как это кажется лучшим способом, но я продолжаю получать сообщение об ошибке.
Я пробовал:
ctr = df_aq['dt'].count() - 1
startTime = df_aq['dt'][0]
endTime = df_aq['dt'][ctr]
print df_weather.iloc[df_weather.index.get_loc(startTime,method='nearest') or df_weather.index.get_loc(endTime,method='nearest')]
, но затем я получаю сообщение об ошибке:
TypeError: unsupported operand type(s) for -: 'long' and 'str'
Я не уверен, что означает эта ошибка
Есть ли лучший способ сделать это, чем iloc?А если нет, что я делаю не так с этим битом кода?
Большое спасибо за любую помощь, которую вы можете предложить.