我有两个数据帧,它们有相似但不完整的数据。这主要是与国家有关的数据,所以这里有一些假的Population (millions)
数据的例子:
表A
| Country | 2014 | 2015 | 2016 | 2017 | 2018 |
|--------:|------|------|------|------|------|
| USA | nan | nan | 323 | 325 | 328 |
| UK | nan | nan | nan | 63 | 65 |
| India | nan | nan | 800 | nan | 1100 |
| China | nan | nan | 1100 | 1200 | 1300 |
表B
| Country | 2014 | 2015 | 2016 | 2017 | 2019 |
|--------:|------|------|------|------|------|
| USA | 319 | 321 | 324 | nan | 330 |
| UK | 58 | 60 | nan | nan | 68 |
| India | 780 | 810 | 820 | nan | 1300 |
| Nigeria | 90 | 100 | 105 | nan | 110 |
从上面,我试图展示我发现的数据集的一些特点:
所以我想把它们组合起来,这样nan
就可以从表B(如果有的话)中填充,列&;如果不存在行,则添加行。如果有冲突,我不在乎使用哪一个(差异不够显著)
基本上,我希望结果如下所示(在本例中,当出现平局时使用表B VAL):
表A联合表B
| Country | 2014 | 2015 | 2016 | 2017 | 2018 | 2019 |
|--------:|------|------|------|------|------|------|
| USA | 319 | 321 | 323 | 325 | 328 | 330 |
| UK | 58 | 60 | nan | 63 | 65 | 68 |
| India | 780 | 810 | 820 | nan | 1100 | 1300 |
| China | nan | nan | 1100 | 1200 | 1300 | nan |
| Nigeria | 90 | 100 | 105 | nan | nan | 110 |
直观地说,我只希望表格尽可能完整。有没有一种不用运行for循环就可以做到这一点的方法?这个表很大,我不想写长循环
您可以使用
concat
和groupby
:输出:
你可以做:
输出
用途:
相关问题 更多 >
编程相关推荐