Python更新两个具有相同列和一些不同行的数据框

标签 python python-3.x dataframe merge concatenation

我正在连接两个具有相同列的数据框。我想更新第一个数据框。但是,我的代码创建了额外的列,但没有更新。

我的代码:

left = pd.DataFrame({"key": ["K0", "K1", "K2", "K3"],
            "A": ["NaN", "NaN", "NaN", "NaN"],
        "B": ["B0", "B1", "B2", "B3"],})
 right = pd.DataFrame({"key": ["K1", "K2", "K3"],    
        "A": ["C1", "C2", "C3"],    
        "B": [ "B1", "B2", "B3"]})
result = pd.merge(left, right, on="key",how='left')   

当前输出:

result = 
  key  A_x B_x  A_y  B_y
0  K0  NaN  B0  NaN  NaN
1  K1  NaN  B1   C1   B1
2  K2  NaN  B2   C2   B2
3  K3  NaN  B3   C3   B3

预期输出:

result = 
  key  B    A  
0  K0  B0  NaN 
1  K1  B1   C1 
2  K2  B2   C2 
3  K3  B3   C3 

最佳答案

使用combine_first :

result = left.set_index("key").combine_first(right.set_index("key")).reset_index()
print(result)

输出

  key    A   B
0  K0  NaN  B0
1  K1   C1  B1
2  K2   C2  B2
3  K3   C3  B3

关于Python更新两个具有相同列和一些不同行的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69599570/

相关文章:

python - Pandas 删除值与列名相同的行

windows - 启动在 Python 3.6.1 上使用 pip install 安装的 spyder 时出现问题

Python排序两个键两个顺序

r - 密度图矩阵,每个图覆盖两个分布

python - Tensorflow找不到GPU

python - 搜索电子邮件并打开取消订阅链接

python - Django:按日期范围过滤对象

python - 如何在贪吃蛇游戏中为蛇的 body 部位使用不同的图像? (Python、Pygame、蛇)

python - Pandas:根据列中的值向 DataFrame 添加新列

python - 使用 Pandas 转换为长面板数据格式