如何反向遍历Pandas DataFrame至指定条件,再以新值继续迭代?
实现方法
可以利用Pandas的反向填充逻辑快速实现需求,无需手动遍历,步骤如下:
1. 准备示例数据
import pandas as pd data = {'element': [120000000, 8000000, 120003000, 7000000, 120003333, 120003444, 5000000]} df = pd.DataFrame(data)
2. 核心处理逻辑
# 筛选并保留7位数字,非7位数字设为NaN temp = df['element'].where((df['element'] >= 1000000) & (df['element'] < 10000000)) # 反转临时列后向前填充,再反转回原顺序得到assigned列 df['assigned'] = temp.iloc[::-1].ffill().iloc[::-1]
逻辑说明
- 第一步通过数值范围精准筛选7位数字(7位数字的取值范围为
1000000 <= x < 10000000),将非7位数字替换为NaN; - 反转临时列后使用
ffill()向前填充,等价于从原DataFrame末尾开始,用最近的7位数字覆盖所有前置行,直到遇到下一个7位数字; - 最后反转回原顺序,即可得到符合要求的
assigned列。
运行后DataFrame结果:
element assigned 0 120000000 8000000 1 8000000 8000000 2 120003000 7000000 3 7000000 7000000 4 120003333 5000000 5 120003444 5000000 6 5000000 5000000
内容的提问来源于stack exchange,提问作者charles_bundschu
相关产品推荐
相关产品推荐

