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

Python Pandas遍历数据集仅输出False值的循环语法求助

筛选未休年假用户并遍历处理邮件

优先推荐:先筛选再遍历(高效写法)

Pandas 不建议直接遍历整个DataFrame,先通过布尔索引筛选出值为False的行(即未休年假的用户),再遍历处理更高效:

假设你的DataFrame中有标记是否休年假的列(比如has_taken_annual_leave),先筛选目标行:

# 筛选未休年假的用户(两种等价写法)
unpaid_leave_users = df[df['has_taken_annual_leave'] == False]
# 或者更简洁的取反写法
unpaid_leave_users = df[~df['has_taken_annual_leave']]

遍历筛选后的条目(用于发送邮件)

如果需要逐行获取用户信息发送邮件,推荐用itertuples()(比iterrows()更快):

# 遍历筛选后的用户,index=False表示不返回行索引
for user in unpaid_leave_users.itertuples(index=False):
    # 提取用户信息(根据你的DataFrame列名调整,比如email、name)
    user_email = user.email
    user_name = user.name
    
    # 这里写入发送邮件的逻辑
    # 示例:调用自定义的邮件发送函数
    # send_annual_leave_reminder(user_email, user_name)
    
    # 测试时可以先打印验证
    print(f"待发送提醒:{user_name} <{user_email}> 未休年假")

如果习惯用iterrows(),写法如下:

for _, row in unpaid_leave_users.iterrows():
    user_email = row['email']
    user_name = row['name']
    
    # 邮件发送逻辑
    # send_annual_leave_reminder(user_email, user_name)
    print(f"待发送提醒:{user_name} <{user_email}> 未休年假")

注意事项

  • 先确认标记列的类型是bool:用df['has_taken_annual_leave'].dtype检查,避免把字符串'False'当成布尔值处理
  • 数据量大时,itertuples()的遍历速度远快于iterrows(),优先使用
  • 邮件发送可以用Python内置的smtplib库,或者更简便的第三方库(如yagmail)实现具体逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:55:24