合并两个数据帧取决于日期

问题描述 投票:0回答:2

我有两个长度不一样的数据帧:

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?

python pandas dataframe
2个回答
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
投票

如果你需要来自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
© www.soinside.com 2019 - 2024. All rights reserved.