如何用新DataFrame更新原Pandas DataFrame整行?判断操作类型
如何更新原DataFrame同步变更?
首先,咱们先明确需求:要把新DataFrame里的变更(Mike的状态和数据、Fred的状态和数据)同步到原DataFrame,同时保留原DF里其他行(Bob、Ted)的内容。
具体实现步骤
这里最直接的方法是用Pandas的update()方法,它专门用来基于索引匹配,用新数据覆盖原DataFrame里的对应行。话不多说,上代码:
import pandas as pd # 定义原DataFrame original_df = pd.DataFrame({ 'Name': ['Mike', 'Bob', 'Ted', 'Fred'], 'Status': ['yes', 'no', 'yes', 'yes'], 'Data': [123, 456, 789, None] }) # 定义新DataFrame new_df = pd.DataFrame({ 'Name': ['Mike', 'Fred'], 'Status': ['no', 'no'], 'Data': [345, 123] }) # 1. 把两个DF都设置为以Name为索引,这样能精准匹配需要更新的行 original_df.set_index('Name', inplace=True) new_df.set_index('Name', inplace=True) # 2. 执行更新:用新DF的内容覆盖原DF对应索引的行 original_df.update(new_df) # 3. 恢复原来的整数索引(如果需要的话) original_df.reset_index(inplace=True) print(original_df)
运行后就能得到你想要的预期输出:
Name Status Data 0 Mike no 345.0 1 Bob no 456.0 2 Ted yes 789.0 3 Fred no 123.0
属于replace还是join?
都不属于标准的replace或join函数场景:
replace()通常是用来替换DataFrame里的特定值(比如把所有的"yes"换成"no"),不是基于行匹配的批量更新。join()是用来合并两个不同结构的DataFrame(比如按索引拼接列),而咱们这里是更新已有行的内容,不是新增列或行。
这个操作更偏向「基于索引的行级替换更新」,用update()方法是最贴合需求的选择。
内容的提问来源于stack exchange,提问作者jason
相关产品推荐
相关产品推荐

