如何从DataFrame筛选末尾连续零数≥3的门店ID列表
解决方法
首先先把你的数据转换成可操作的DataFrame:
import pandas as pd # 构造对应数据 data = [ [0,0,1,1], [1,0,1,0], [0,0,1,0], [0,1,0,0], [0,1,0,0] ] df = pd.DataFrame(data, columns=[76, 123, 872, 987])
接下来核心是计算每列末尾连续零的数量,可以写个简单的自定义函数实现:
def count_trailing_zeros(col): count = 0 # 从列的最后一行往前遍历 for val in reversed(col): if val == 0: count += 1 else: break # 遇到非零值就停止统计 return count # 对每一列应用这个函数,得到每个门店ID对应的末尾连续零数量 trailing_zero_counts = df.apply(count_trailing_zeros)
最后筛选出符合条件的门店ID:
result = trailing_zero_counts[trailing_zero_counts >= 3].index.tolist() print(result) # 输出: [76, 987]
简单说明
reversed(col)会把列的行数据倒序,让我们从最后一行开始检查- 只要遇到0就累加计数,碰到第一个非0值就停止,这样得到的就是末尾连续零的数量
- 用布尔索引筛选出计数≥3的列名(也就是门店ID),转成列表就是你要的结果
内容的提问来源于stack exchange,提问作者Ринат Хафизов
相关产品推荐
相关产品推荐

