iterrows()

iterrows()pandasDataFrame对象的一个方法,主要用于逐行遍历DataFrame

一、功能介绍

它会生成一个迭代器,在每次迭代中返回一个包含两个元素的元组。其中,第一个元素是行索引,通常是整数索引或者标签索引;第二个元素是一个pandas.Series对象,代表该行的数据,其中的索引是列名,对应的值是该行在该列上的值。

二、使用场景

  1. 逐行处理数据
    • 当你需要对DataFrame中的每一行数据进行特定的处理时,可以使用iterrows()。例如,在你的提供的代码中,通过遍历每一行来获取图像名称和对应的标签数据,然后进行图像读取和标签处理操作。
for img_name, target in csv_data.iterrows():
    images.append(torchvision.io.read_image(
        os.path.join(data_dir, 'bananas_train' if is_train else
                     'bananas_val', 'images', f'{img_name}')))
    targets.append(list(target))
  1. 复杂的数据处理逻辑
    • 如果处理逻辑比较复杂,无法通过向量化操作高效完成,iterrows()可以提供一种逐行处理的方式。不过需要注意,对于非常大的数据集,逐行处理可能会比较耗时,此时可以考虑其他更高效的方法,如使用apply方法结合向量化函数或者使用numba等工具进行优化。

三、注意事项

  1. 性能问题
    • iterrows()不是最高效的遍历方式。因为它每次返回的是一个Series对象,这个对象是对原始数据的视图,可能会涉及一些开销。对于大规模数据集,可能会导致性能下降。
  2. 可变性风险
    • 对返回的Series对象进行修改时要小心,因为这可能会影响原始的DataFrame数据,或者导致意外的结果。如果需要修改数据,最好使用明确的赋值操作或者使用DataFrame的方法来确保行为的可预测性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值