📜  合并而不会丢失不匹配 col 的数据 (1)

📅  最后修改于: 2023-12-03 15:37:10.166000             🧑  作者: Mango

合并而不会丢失不匹配 col 的数据

当我们需要合并两个数据集时,很容易遇到不同列(col)的情况。 在某些情况下,我们可能会希望合并这些数据并保留所有数据,而不只是与相应行匹配的数据。 这就是“合并而不会丢失不匹配 col 的数据”的情况。

下面是一个示例数据集,我们将其称为df1:

| ID  | Value1  | Value2 |
|----|--------|--------|
| 1  | 4.5    | 7      |
| 2  | 6      | 8      |
| 3  | 5.5    | 9      |
| 4  | 9      | 3      |

我们还有一个名为df2的数据集,它与df1具有不同的列:

| ID  | Value3  |
|----|--------|
| 1  | 4.5    |
| 2  | 6      |
| 5  | 8.2    |
| 6  | 9.1    |

我们想要将这两个数据集合并成一个,但我们希望保留不匹配列的所有数据。这意味着,我们需要合并后存在缺失值的行(符合条件非缺失值)。

我们可以使用 Pandas 包中的merge()函数完成此操作:

import pandas as pd

df1 = pd.DataFrame({'ID': ['1', '2', '3', '4'],
                    'Value1': [4.5, 6, 5.5, 9],
                    'Value2': [7, 8, 9, 3]})

df2 = pd.DataFrame({'ID': ['1', '2', '5', '6'],
                    'Value3': [4.5, 6, 8.2, 9.1]})

merged = pd.merge(df1, df2, on='ID', how='outer')

在这里,我们将 df1 和 df2 使用列“ID”进行外连接,以保留每个数据集中所有行。 使用outer参数定义进行外连接, 连接方式为保留两个数据集的全部行/列,只不过缺失数据为NaN。

合并后输出的结果如下:

| ID  | Value1 | Value2 | Value3 |
|----|-------|-------|-------|
| 1  | 4.5   | 7     | 4.5   |
| 2  | 6     | 8     | 6     |
| 3  | 5.5   | 9     | NaN   |
| 4  | 9     | 3     | NaN   |
| 5  | NaN   | NaN   | 8.2   |
| 6  | NaN   | NaN   | 9.1   |

如预期,合并后的结果保留了每个数据集中所有行,而不仅仅是匹配的行。 并且没匹配的区域 NaN 的数据被正确地显示出来了。

因此,我们可以通过使用外连接的合并方法,合并两个数据集并保留不匹配列的数据。