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

如何遍历Pandas DataFrame,按日筛选首次满足A≥B的记录

解决每日首次A≥B记录的统计问题

看起来你现在的代码会把所有满足A≥B的记录都塞进列表里,但你只需要每天的第一条,对吧?别担心,我们可以利用pandas的分组功能来高效解决这个问题,比循环遍历整个大DataFrame要快得多。

具体实现方案

直接遍历索引的方式不仅效率低,还没法过滤掉同一天的重复符合条件记录,我们换个思路:先按日期分组,再从每组里提取首次符合条件的记录:

import pandas as pd

# 假设你的DataFrame名为df,且Date列是DatetimeIndex
# 提取日期部分作为分组依据
df['day'] = df.index.date

# 先筛选所有A≥B的行,再按日期分组取每组第一行
daily_first_match = df[df['A'] >= df['B']].groupby('day').first().reset_index()

# 生成你需要的字符串列表
count = [f"A is larger than B on {row.name}" for _, row in daily_first_match.iterrows()]

# 输出结果
for line in count:
    print(line)

代码逻辑解释

  • df.index.date:从DatetimeIndex中提取纯日期(比如2019-09-13),用来确保我们按自然日分组。
  • df[df['A'] >= df['B']]:先筛选出所有满足条件的记录,再分组,避免对无符合条件的日期做无效处理。
  • .groupby('day').first():对每个日期分组取第一行,也就是当天首次出现A≥B的记录。
  • 最后用列表推导式把结果格式化成你需要的字符串样式,得到的count列表就是精准的每日首次记录集合。

如果你的Date列不是索引,而是普通列,只需要把df.index.date改成df['Date'].dt.date就可以了,逻辑完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 08:52:42