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

如何迭代Pandas DataFrame值生成符合捐赠条件的人员ID列表

问题原因
  • iterrows()遍历逻辑错误:for 行索引, 当前行对象 in DataFrame.iterrows()是正确用法,你在循环内部重新把a赋值为val1['controln'](整个ID列的Series对象),导致追加到列表里的是全量ID而非当前行符合条件的单个ID
  • 多余嵌套循环:每一行只有一个amount_donated值,不需要额外遍历c,直接取当前行的对应字段判断即可
  • 边界逻辑可按需调整:如果需求是「超过1/5美元」即严格大于,可把判断条件里的>=改为>
修改后的循环写法
above5 = []
above1 = []

for _, row in val1.iterrows():
    # 取当前行的对应字段值
    user_id = row['controln']
    donated = row['donated']
    amount = row['amount_donated']
    if amount >= 5:
        above5.append(user_id)
        # 超过5的自然也超过1,如果需要两个列表都存该ID就保留下面这行,不需要可删除
        above1.append(user_id)
    elif amount >= 1:
        above1.append(user_id)
    else:
        print('No match')
print('Done')
更高效的Pandas向量化写法(无需手动写循环,性能远高于遍历)
# 捐款>=1的人员ID列表
above1 = val1[val1['amount_donated'] >= 1]['controln'].tolist()
# 捐款>=5的人员ID列表
above5 = val1[val1['amount_donated'] >= 5]['controln'].tolist()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:27:05