Слияние фреймов данных в пандах на дату только объединяет заголовки - PullRequest
0 голосов
/ 18 февраля 2019

В настоящее время я пытаюсь объединить два кадра данных по соответствующему столбцу даты / времени.Информация о каждом из моих наборов данных приведена ниже:

data1.head(5)
                  DATE     AA           ...        AB    AB2
0  2011-01-01 00:30:00     6135.998518  ...        0.0   80.331500
1  2011-01-01 01:00:00     5711.638352  ...        0.0   74.380500
2  2011-01-01 01:30:00     5455.901902  ...        0.0   82.742500
3  2011-01-01 02:00:00     5130.634418  ...        0.0  102.091667
4  2011-01-01 02:30:00     4854.064390  ...        0.0  113.467667

[5 rows x 30 columns]

data2.head(5)
        DATE            A DEM         A RRP  ...    AA7 RRP AB DEM       AB RRP
0  2006/01/01 00:30:00  8013.27833    19.67  ...    36.00  5657.67500    20.03
1  2006/01/01 01:00:00  7726.89167    18.56  ...    33.00  5460.39500    18.66
2  2006/01/01 01:30:00  7372.85833    19.09  ...    33.01  5766.02500    20.38
3  2006/01/01 02:00:00  7071.83333    17.40  ...    33.02  5503.25167    18.59
4  2006/01/01 02:30:00  6865.44000    17.00  ...    33.00  5214.01500    17.53

[5 rows x 11 columns]

Мой код, который я пробую, приведен ниже.

import numpy as np import pandas как pd

data1=pd.read_csv("1.csv")
data2=pd.read_csv("2.csv")

mergeddf = pd.merge(data1[['DATE','AA','AA2','AB']],
                                 data2[['DATE','A RRP']],on='DATE')


mergeddf.to_csv("out.csv",index=False)

Вот как выглядит мой объединенный файл:

mergeddf

Так что, как видите, код объединяет только заголовки, но не данные.Поскольку одна из моих дат начинается в 2011, а одна из моих дат начинается в 2006, я хотел бы объединить их так, чтобы они пересекались, чтобы я начал получать данные только после того, как их даты пересекутся, как я могу добиться достиженияэто?

Спасибо

1 Ответ

0 голосов
/ 18 февраля 2019

Столбец DATE, вероятно, относится к типу object, поэтому вы не можете присоединиться к датам с различным форматом (например, 2006/01/01 против 2006-01-01).Вам нужно изменить их на тип datetime.

data1['DATE'] = pd.to_datetime(data1['DATE'])
data2['DATE'] = pd.to_datetime(data2['DATE'])

mergeddf = pd.merge(data1[['DATE','AA','AA2','AB']],
                                 data2[['DATE','A RRP']],on='DATE')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...