Python中DataFrame.loc与DataFrame.append添加行的差异对比
pandas中df.loc添加行与df.append的差异及适用场景
核心差异
废弃状态
df.append()在pandas 1.4.0版本后已被标记为废弃(deprecated),官方明确推荐使用pd.concat()或df.loc的方式替代,这是两者最关键的区别。操作特性
df.loc[len(df.index)] = new_object:属于**原地修改(in-place)**操作,直接在原DataFrame末尾添加新行,不会返回新对象,原数据会被直接改变。df.append(new_object):属于非原地操作,不会修改原DataFrame,而是返回一个包含新行的全新DataFrame,原数据保持不变。
性能与批量操作表现
- 单条添加时,两者性能差异不大;但如果是循环多次添加行,两种方式效率都很低——
df.loc每次修改都会触发内存重分配,df.append每次生成新对象也会消耗资源。这种场景下官方建议先将所有新行整理成列表或小型DataFrame,再用pd.concat([原df, 新df])一次性合并,性能会大幅提升。
- 单条添加时,两者性能差异不大;但如果是循环多次添加行,两种方式效率都很低——
参数灵活性
df.append()支持直接传入单个行对象(如Series、字典)、多行组成的列表,甚至另一个DataFrame,还能通过ignore_index=True参数自动重置索引;df.loc的方式需要手动指定索引位置(len(df.index)对应末尾),添加多行时需手动处理索引或循环操作,灵活性稍弱,但胜在直接修改原数据的特性。
适用场景
- 若需直接修改原DataFrame,且仅添加少量单行,优先用
df.loc[len(df.index)] = new_object; - 若需保留原DataFrame、不修改原数据,建议直接用
pd.concat()替代df.append()(毕竟append已被废弃); - 批量添加行的场景,统一使用
pd.concat()是最优选择,兼顾性能与规范性。
内容的提问来源于stack exchange,提问作者MacroProcessor
相关产品推荐
相关产品推荐

