循环中Pandas DataFrame保留前次内容致频率统计异常
解决循环中Pandas DataFrame累积旧数据的问题
你的问题核心不是rel没清空,而是每次循环时的rows变量没有重置——你每次迭代都在往rows里追加数据,没有清空,导致创建的df一次比一次大,筛选后的rel自然会包含前几次的内容。
具体修复步骤:
- 每次循环开始时,先把
rows重置为空列表,确保当前迭代的df只基于本次读取的XML数据创建。 - 如果你的
array是随循环动态变化的,也要确认它在每次迭代时是正确的当前值,不过从你的问题描述看,主要问题出在rows。
修正后的代码示例:
for var in range(1,3): rows = [] # 关键:每次循环初始化rows,清空旧数据 # 这里执行当前迭代对应的XML数据读取逻辑,把数据存入rows df = pd.DataFrame(rows, columns=cols) rels = df.loc[df['location2'].isin(array)] rel = rels.assign(Index=range(len(rels))).set_index('Index') print(rel)
补充说明:
之前你尝试删除rel、清空df都没用,因为根源是rows一直在累积之前迭代的数据,df每次都是基于这个越来越大的rows生成的,所以必须从数据源rows入手,每次循环重新初始化它。
内容的提问来源于stack exchange,提问作者Sinmi Akindele
相关产品推荐
相关产品推荐

