根据日期合并两个数据框

时间:2018-09-18 17:19:25

标签: python pandas dataframe

我有两个长度不相同的数据框:

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 :(得分:1)

您可以将日期转换为时间戳,然后在该列上合并,如果要包括所有日期,则可以使用“外部”联接

数据框

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')

退出:

           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

答案 1 :(得分:1)

如果您需要df1df2中的所有行,包括日期和值。您可以连接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