如何在Python中动态更新Pandas DataFrame的循环迭代器?
动态遍历Pandas DataFrame(支持循环中新增行)
问题根源
df.iterrows()是在循环启动前就生成了固定的迭代器,后续对DataFrame新增行的操作不会同步到这个迭代器里,所以你只能遍历到初始的4行,新增的行不会被处理。
简洁解决方案
直接用while循环跟踪当前处理的行索引,利用len(df)的实时更新特性,让新增的行自动纳入迭代范围:
import pandas as pd df = pd.DataFrame({"A": [1, 2, 3, 4]}) i = 0 current_idx = 0 while current_idx < len(df): row = df.iloc[current_idx] print(current_idx, row["A"]) # 模拟新增行的逻辑 if i < 2: df.loc[len(df), "A"] = df["A"].max() + 1 i += 1 current_idx += 1
输出结果
0 1 1 2 2 3 3 4 4 5 5 6
方案说明
- 用
current_idx记录当前要处理的行位置,每次循环都判断current_idx是否小于DataFrame的实时长度 - 新增行后
len(df)会立即变大,循环会自动继续处理这些新加入的行 - 不需要额外的标记列(比如你原来方案里的B列),代码更简洁直观
内容的提问来源于stack exchange,提问作者FernandoC
相关产品推荐
相关产品推荐

