我有两个长度不相同的数据框:
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?
答案 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)
如果您需要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