首页 > 解决方案 > Python表合并具有相同名称的列

问题描述

我正在从网站中提取数据。每条记录有 100 多个数据列。根据可用数据,每条记录可以有不同数量的数据列,但所有不同的列都有一个唯一的名称,因此可以匹配它们,但它们的顺序不会相同,因为列数会有所不同。总列数未知。

假设每条记录有 4 个数据表,都具有相同的索引。

如何将记录合并到第一个数据表中,同时将每个数据点放入其列并在需要时添加新列。

例子:

表格1:

| id | A | B | C   |

| 0  | 1 | 2 | 5   |

| 1  | 2 | 3 | nan |

表 2:

| id | C | D |

| 1  | 5 | 6 |

| 2  | 7 | 8 |

结果:

| Id    | A     | B     | C     | D     |

| 0     | 1     | 2     | 5     | 6     |

| 1     | 2     | 3     | nan   | nan   |

| 2     | nan   | nan   | 7     | 8     |

注意: - nan 是空白值 - 合并将始终为空白 + 值 - 在这种情况下,C 被合并,D 被添加。我可能有 10 列需要合并。- 我不是要代码,只是指导如何在 python 中完成这个

尝试使用 pandas 加入和合并,但它们不是为这个用例设计的。

标签: pythonpandasnumpy

解决方案


使用pd.DataFrame.merge

import pandas as pd

df1 = pd.DataFrame({'A': [1, 2], 'B': [2, 3], 'C': [5, None]})
df2 = pd.DataFrame({'C': [5, 7], 'D': [6, 8]})

common_columns = list(df1.columns & df2.columns)

df1.merge(df2, on=common_columns, how='outer')

输出:

     A    B    C    D
0  1.0  2.0  5.0  6.0
1  2.0  3.0  NaN  NaN
2  NaN  NaN  7.0  8.0

推荐阅读