You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除DataFrame中含连续递增数字且末尾为0的行?

解决DataFrame移除特定格式行的问题

你的代码没有生效,核心问题是判断逻辑错误。以目标值12340为例,它的数字序列是[1,2,3,4,0],其中最后两位4和0的差为-4,不满足你写的digits[j+1]-digits[j] == 1,导致all()条件永远为False,自然不会选中任何行。

正确的逻辑应该是:数字最后一位是0,且去掉最后一位后的前缀数字是连续递增的。以下是两种修正方案:

方案一:修正循环逻辑

rows_to_remove = []
for i, row in df.iterrows():
    prix_str = str(row['prix'])
    # 过滤长度不足2或末尾非0的情况
    if len(prix_str) < 2 or prix_str[-1] != '0':
        continue
    # 提取前缀数字并检查是否连续递增
    prefix_digits = [int(d) for d in prix_str[:-1]]
    if all(prefix_digits[j+1] - prefix_digits[j] == 1 for j in range(len(prefix_digits)-1)):
        rows_to_remove.append(i)

df = df.drop(rows_to_remove)

方案二:矢量化操作(更高效)

对于大数据量的DataFrame,iterrows效率较低,推荐用矢量化的apply方法:

def check_target_pattern(x):
    s = str(x)
    # 基础条件:长度≥2且末尾为0
    if len(s) < 2 or s[-1] != '0':
        return False
    prefix = s[:-1]
    # 生成预期的连续递增前缀字符串
    start = int(prefix[0])
    expected_prefix = ''.join(str(start + idx) for idx in range(len(prefix)))
    # 对比实际前缀和预期前缀是否一致
    return prefix == expected_prefix

# 保留不符合目标模式的行
df = df[~df['prix'].apply(check_target_pattern)]

内容的提问来源于stack exchange,提问作者kim seol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 01:20:10