Python表合并具有相同名称的列

时间:2019-10-03 06:51:32

标签: python pandas numpy

我正在从网站中提取数据。每个记录有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连接和合并,但它们不是为此用例设计的。

1 个答案:

答案 0 :(得分:0)

使用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