Слияние двух данных в зависимости от даты - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть два кадра данных, которые имеют разную длину:

df1:

2000-01-31,9
2000-02-28,8
2000-03-31,7
2000-04-30,6
2000-05-31,5
2000-06-30,4
2000-07-31,3
2000-08-31,2
2000-09-30,1
2000-10-31,0
2000-11-30,11
2000-12-31,12

и df2, который короче:

2000-05-31,9
2000-06-30,2
2000-07-31,6
2000-08-31,4
2000-09-30,3
2000-10-31,0
2000-11-30,1

Как я могу объединитьсоответствующие даты df1 в df2?

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Если вам нужны все строки из df1 и df2, включая даты и значения.Вы можете согласиться с DFS

import pandas as pd
df3=pd.concat([df1,df2])
print(df3)
date    value
1/31/2000   9
2/28/2000   8
3/31/2000   7
4/30/2000   6
5/31/2000   5
6/30/2000   4
7/31/2000   3
8/31/2000   2
9/30/2000   1
10/31/2000  0
11/30/2000  11
12/31/2000  12
5/31/2000   9
6/30/2000   2
7/31/2000   6
8/31/2000   4
9/30/2000   3
10/31/2000  0
0 голосов
/ 18 сентября 2018

вы можете преобразовать дату в отметку времени, а затем объединить в этом столбце, если вы хотите включить все даты, которые вы можете использовать «внешнее» объединение

dataframe

df1

    0   1
0   2000-01-31  9
1   2000-02-28  8
2   2000-03-31  7
3   2000-04-30  6
4   2000-05-31  5
5   2000-06-30  4
6   2000-07-31  3
7   2000-08-31  2
8   2000-09-30  1
9   2000-10-31  0
10  2000-11-30  11
11  2000-12-31  12

df2

    0   1
0   2000-05-31  9
1   2000-06-30  2
2   2000-07-31  6
3   2000-08-31  4
4   2000-09-30  3
5   2000-10-31  0
6   2000-11-30  1


df1.merge(df,on=[0],how='inner')

out:

           0    1_x 1_y
0   2000-05-31  9   5
1   2000-06-30  2   4
2   2000-07-31  6   3
3   2000-08-31  4   2
4   2000-09-30  3   1
5   2000-10-31  0   0
6   2000-11-30  1   11
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...