合并具有一个公共列名的两个数据框

时间:2019-11-16 12:55:27

标签: python pandas dataframe merge

我有两个.csv文件“ train_id.csv”和“ train_ub.csv”,我想将它们作为熊猫数据帧加载。它们的尺寸不同,但是只有一个共同的列,比如:

train_id:

ID  id_01   id_02   id_03   id_04   
1   0.0     1.0     5.2     7.1 
2   0.5     7.7     3.4     9.8 
5   1.5     0.8     1.6     2.5
7   3.0     0.2     3.4     6.3
8   5.5     1.8     7.5     7.0
9   7.2     2.6     9.1     1.1
11  9.5     3.5     2.2     0.3

train_ub期间:

ID  ub_01   ub_02   ub_03   ub_04   
1   0.0     1.0     9.2     8.3 
2   1.5     2.7     0.4     4.9 
3   2.7     4.8     7.6     3.7
4   4.8     9.2     2.4     5.4
6   6.0     5.8     5.5     0.6
10  9.1     3.6     4.1     2.0
11  7.3     7.5     0.2     9.5     

可能会看到它们具有相同的第一列,但每个数据帧中都缺少值。大熊猫中是否有一种方法可以将它们逐列合并,以获得以下形式的数据框:

ID  id_01   id_02   id_03   id_04   ub_01   ub_02   ub_03   ub_04
1   0.0     1.0     5.2     7.1      0.0     1.0     9.2     8.3
2   0.5     7.7     3.4     9.8      1.5     2.7     0.4     4.9
3   NaN     NaN     NaN     NaN      2.7     4.8     7.6     3.7
4   NaN     NaN     NaN     NaN      4.8     9.2     2.4     5.4
5   1.5     0.8     1.6     2.5      NaN     NaN     NaN     NaN
6   NaN     NaN     NaN     NaN      6.0     5.8     5.5     0.6
7   3.0     0.2     3.4     6.3      NaN     NaN     NaN     NaN
8   5.5     1.8     7.5     7.0      NaN     NaN     NaN     NaN
9   7.2     2.6     9.1     1.1      NaN     NaN     NaN     NaN
10  NaN     NaN     NaN     NaN      9.1     3.6     4.1     2.0
11  9.5     3.5     2.2     0.3      9.5     3.5     2.2     0.3

PS:请注意,这是一个过于简化的示例,实际数据库的形状为id(144233,41)和ub(590540,394)。

1 个答案:

答案 0 :(得分:0)

您可以使用外部联接来完成此操作。这是它的代码:

train_id = pd.read_csv("train_id.csv")
train_up = pd.read_csv("train_up")
train_merged = train_id.merge(train_ub, on=["ID"], how="outer")