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

Posted

技术标签:

【中文标题】Python更新具有相同列和一些不同行的两个数据框【英文标题】:Python Update two dataframes with identical columns and a few differing rows 【发布时间】:2021-12-04 12:50:15 【问题描述】:

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

我的代码:

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 

【问题讨论】:

【参考方案1】:

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

【讨论】:

是的!它就像一个cham。非常感谢

以上是关于Python更新具有相同列和一些不同行的两个数据框的主要内容,如果未能解决你的问题,请参考以下文章

在R中组合两个具有不同行数的数据框[重复]

合并具有不同行的熊猫数据框? [复制]

从具有特定列和条件的数据框中选择行(不使用列名)

pyspark:如果列在不同行中具有相同的值,则合并两行或多行

检查具有数字和字符数据的 2 个数据帧之间差异的最有效方法?

如何将具有不同时区的 tz_convert 应用于熊猫数据框中的不同行