Панды объединяют два кадра данных по дате, заканчивая всем столбцом NaN - PullRequest
0 голосов
/ 03 декабря 2018

Я прошел через несколько примеров подобных запросов, к сожалению, безрезультатно.У меня есть два кадра данных, которые мне нужно объединить.

df1

     .       DATE            HIGH	        LOW		OPEN		CLOSE
0	2013-01-04	10734.23	10602.24	10604.50	10688.11
1	2013-01-07	10743.69	10589.70	10743.69	10599.01
2	2013-01-08	10602.12	10463.43	10544.21	10508.06
3	2013-01-09	10620.70	10398.61	10405.67	10578.57
4	2013-01-10	10686.12	10619.65	10635.11	10652.64
5	2013-01-11	10830.43	10748.06	10786.14	10801.57
6	2013-01-15	10952.31	10851.66	10914.65	10879.08
7	2013-01-16	10806.41	10591.30	10806.41	10600.44

df2

.        Date          sentiment
0	2013-01-01	    -0.027282
1	2013-01-02	    0.063613
2	2013-01-03	    0.091363
3	2013-01-04	    0.092818
4	2013-01-05	    -0.019002
5	2013-01-06	    -0.033752
6	2013-01-07	    0.060038
7	2013-01-08	    0.081649
8	2013-01-09	    -0.031924
9	2013-01-10	    0.109111
10	2013-01-11	  -0.057070
11	2013-01-12	  -0.052431
12	2013-01-13	  0.014726
13	2013-01-14	  0.047232
14	2013-01-15	  0.060790
15	2013-01-16	  -0.067828
16	2013-01-17	  -0.035174

используемый код: merged_left = pd.merge (left = df1, right = df2, how = 'left', left_on = 'Date',right_on = 'Date')

Так что я теряю все в данных настроений, как показано ниже:

.         Date		HIGH		LOW		OPEN		CLOSE		sentiment
0	2013-01-04	10734.23	10602.24	10604.50	10688.11	NaN
1	2013-01-07	10743.69	10589.70	10743.69	10599.01	NaN
2	2013-01-08	10602.12	10463.43	10544.21	10508.06	NaN
3	2013-01-09	10620.70	10398.61	10405.67	10578.57	NaN
4	2013-01-10	10686.12	10619.65	10635.11	10652.64	NaN
5	2013-01-11	10830.43	10748.06	10786.14	10801.57	NaN
6	2013-01-15	10952.31	10851.66	10914.65	10879.08	NaN
7	2013-01-16	10806.41	10591.30	10806.41	10600.44	NaN

Это должно выглядеть так, как показано ниже, df2 - это большой массив данных с 2157 строками, и многие даты не в df (строка 1447) ... эти даты не являютсянеобходимо, в основном я хочу только данные о настроениях для соответствующих дат, которые существуют в df1 :

.       Date		HIGH		LOW		OPEN		CLOSE		sentiment
0	2013-01-04	10734.23	10602.24	10604.50	10688.11	0.092818
1	2013-01-07	10743.69	10589.70	10743.69	10599.01	0.060038
2	2013-01-08	10602.12	10463.43	10544.21	10508.06	0.081649
3	2013-01-09	10620.70	10398.61	10405.67	10578.57	-0.031924
4	2013-01-10	10686.12	10619.65	10635.11	10652.64	0.109111
5	2013-01-11	10830.43	10748.06	10786.14	10801.57	-0.057070
6	2013-01-15	10952.31	10851.66	10914.65	10879.08	0.060790
7	2013-01-16	10806.41	10591.30	10806.41	10600.44	-0.067828

Любая помощь будет очень признательна ... была в этом выпуске все выходные.

1 Ответ

0 голосов
/ 03 декабря 2018

Проблема в том, что нужно время и дата в обоих столбцах, а также внутреннее соединение по умолчанию, поэтому how='inner' должно быть опущено:

 df1['Date'] = pd.to_datetime(df1['Date'])
 df2['Date'] = pd.to_datetime(df2['Date'])
 merged_left = pd.merge(df1, df2, on='Date')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...