【发布时间】:2022-01-25 04:18:27
【问题描述】:
假设我有一个main df1:
| Name: | ID | ID2 | score |
|---|---|---|---|
| Michael | 1 | 01 | 100 |
| Robert | 12 | 012 | 80 |
| William | 123 | 65 | |
| Jul | 01234 | 87 |
然后我想添加df2:
| Name: | ID | ID2 | score |
|---|---|---|---|
| Jul | 1234 | 01234 | 87 |
| William | 123 | 0123 | 80 |
| Steven | 12345 | 012345 | 99 |
因此,如果df1 是我的main 数据框,我想将新值从df2 添加到df1。在df1 中name 的值是新的情况下,我希望它添加到df1 的底部,并且在name 的值确实存在于df1 的情况下,我想要当前行将被新的 df2 值覆盖,并保留在添加 df2 值之前所在的同一行中。
所以我的 final_df 应该是这样的:
| Name: | ID | ID2 | score |
|---|---|---|---|
| Michael | 1 | 01 | 100 |
| Robert | 12 | 012 | 80 |
| William | 123 | 0123 | 80 |
| Jul | 1234 | 01234 | 87 |
| Steven | 12345 | 012345 | 99 |
我试过了:
pd.concat([df1, df2])
- 但这适用于我们将新数据添加到数据框中的情况,在将 df2 中的“Jul”和“William”添加到我们的 df1 的情况下,我希望它基本上覆盖 df1 中的当前数据'Jul' 和 'William' 因为这些名称值已经存在于我们的 df1 中
有更好的解决方案吗?提前谢谢你
【问题讨论】:
-
concat 将创建重复项 - 如果值不同怎么办?
-
如果值不同但名称相同,我们希望覆盖已经存在的名称的值 - 例如 df2 中的“Jul”示例,df1 中的“Jul”存在但列没有值:“ID”,但在 df2 中,我们有此列,它是新数据,因此我们希望用新数据覆盖“Jul”。而不是像 concat 方法那样将其添加到底部。
标签: python pandas dataframe concatenation