Pandas向DataFrame添加行时列重复问题求助
问题排查与解决
列重复的核心原因
- 循环里的拼接对象错误:你每次都用
self.loadedDB和当前行拼接,而非基于已更新的DB累加。这会导致每循环一次,就把self.loadedDB的全部内容重复加入一次,次数多了必然出现列重复、数据冗余的问题。 - 初始化的空
DB未被使用:你定义了指定列的空DataFrame,但循环中直接用self.loadedDB覆盖了初始值,完全浪费了之前的定义。
修正后的代码
# 初始化指定列的空DataFrame DB = pd.DataFrame(columns=['MAN','MOD','YEAR','TYPE']) # 先将已有数据合并到初始DB中(如果self.loadedDB有数据的话) DB = pd.concat([DB, self.loadedDB]) # 循环逐行添加数据 for _, row in other_dataFrame.iterrows(): # 基于当前的DB拼接新行,而非重复使用self.loadedDB DB = pd.concat([DB, row.to_frame().T], ignore_index=True)
更高效的替代方案(避免循环)
Pandas原生不适合逐行循环操作,数据量大时效率极低。直接批量合并是更优选择:
# 直接将other_dataFrame的目标列与self.loadedDB合并 DB = pd.concat([self.loadedDB, other_dataFrame[['MAN','MOD','YEAR','TYPE']]], ignore_index=True) # 确保列顺序与预期一致 DB = DB.reindex(columns=['MAN','MOD','YEAR','TYPE'])
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

