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

如何用Python从DataFrame中提取含win条件的interval后数字

嘿,我来帮你搞定这个提取数字的需求!假设你已经把CSV读成DataFrame了,咱们就针对满足"win"条件的行,把interval后面的数字抠出来,比如你说的21、35这类。

具体实现步骤

先明确下场景哈:我默认你的DataFrame里有一列用来标记是否获胜(比如叫result,值为"win"的就是目标行),还有一列存着类似"interval21"这种字符串(比如叫interval_col)。要是你的列名不一样,后面改一下就行~

方法一:分步操作(清晰易懂)

先看代码,每一步都给你标注清楚:

import pandas as pd

# 读取CSV到DataFrame(这步你已经搞定了,我就写出来凑完整流程)
df = pd.read_csv("你的文件名.csv")

# 第一步:筛选出所有结果为"win"的行
win_filtered = df[df["result"] == "win"]

# 第二步:从interval列里提取数字
# 用正则表达式匹配"interval"后面的所有数字,捕获后转成整数
win_filtered["extracted_num"] = win_filtered["interval_col"].str.extract(r"interval(\d+)").astype(int)

# 如果你想要所有提取出的数字组成的列表,直接转就行
target_numbers = win_filtered["extracted_num"].tolist()
print(target_numbers)  # 比如输出 [21, 35]

这里的正则r"interval(\d+)"是核心:interval匹配固定前缀,(\d+)专门捕获后面的1个或多个数字,这样就能精准把数字摘出来啦。

方法二:链式操作(简洁版)

要是你喜欢代码更紧凑,不想单独存筛选后的DataFrame,可以一步搞定:

target_numbers = df[df["result"] == "win"]["interval_col"].str.extract(r"interval(\d+)").astype(int).squeeze().tolist()

.squeeze()是把单列的DataFrame转成Series,这样转列表更方便~

特殊情况适配

如果你的interval列格式有点不一样(比如是"interval_21"、"interval-35"这种带分隔符的),咱们调整正则就行:

  • 带下划线的:用r"interval_(\d+)"
  • 不管中间是什么非数字分隔符:用r"interval\D*(\d+)"(\D*能匹配任意非数字的字符)

要是还有其他特殊格式,随时调整细节就好!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:12:57