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

如何在R中使用dplyr筛选两个按数值排序模式之间的所有行

Pandas 按版本号范围筛选行的解决方案

你需要先将字符串格式的版本号转换为可按数值逻辑比较的格式,再做范围筛选,避免字符串逐字符比较的逻辑误差,两种常用实现方式如下:


方法1:拆分版本段比较(无需额外依赖)

import pandas as pd

# 假设存储版本号的列名为version,可替换为你实际的列名
# 按.拆分版本号,提取前缀、主版本、次版本段
df[['prefix', 'major_ver', 'minor_ver', 'suffix']] = df['version'].str.split('.', expand=True)
# 将版本号转换为整数类型
df['major_ver'] = df['major_ver'].astype(int)
df['minor_ver'] = df['minor_ver'].astype(int)

# 筛选大于 1st.7.1.* 且小于 1st.13.1.* 的行
result_df = df[
    (df['prefix'] == '1st') &
    ((df['major_ver'] > 7) | ((df['major_ver'] == 7) & (df['minor_ver'] > 1))) &
    ((df['major_ver'] < 13) | ((df['major_ver'] == 13) & (df['minor_ver'] < 1)))
].drop(columns=['prefix', 'major_ver', 'minor_ver', 'suffix'])

方法2:使用版本解析工具(通用度更高,适配复杂版本格式)

借助packaging库的版本解析能力,不需要手动拆分版本段,逻辑更简洁:

import pandas as pd
from packaging.version import Version

df['ver_obj'] = df['version'].apply(lambda x: Version(x.replace('1st.', '')))
result_df = df[
    (df['ver_obj'] > Version('7.1')) &
    (df['ver_obj'] < Version('13.1'))
].drop(columns='ver_obj')

如果运行提示缺少packaging库,先执行pip install packaging安装即可。


你当前使用的DataFrame参考示例:
dataframe示例图

内容的提问来源于stack exchange,提问作者Tinniam V. Ganesh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 22:45:08