使用python循环计算csv文件中列与列的值并输出

使用python循环计算csv文件中列与列的值并输出

当我们想尝试计算某一列与另一列或另几列的某个函数值时,很多人第一反应是自己手动计算,次数较少时工作量会比调试一个代码轻松,但是当运算次数变多时,代码就显得更高效率了。

以下用一个例子来讲解用法

在日常科研中,计算某某指数是基本功,当我想计算CSI指数时,涉及到NIR、RED、SWIR,在我已有的高分辨率影像中,NIR有18个,RED有10个,SWIR有17个,根据排列组合的原理,需要计算3060次才能计算出不同波段情况下的CSI指数,如果手动计算则会费时费力且容易出错,因此采用python进行批量计算

在计算之前要把不参与运算的其他波段删除或者记住波段所在范围,调整range里面的参数(括号里面指的是波段所在的列号,并不代表波段数),完成组合运算。

import pandas as pd
df = pd.read_csv(r'.\start.csv')#python文件需要放在该文件路径中
result=[]
for i in range(1,19,1):#列号:NIR波段共18for j in range(19,29,1):#列号:RED波段共10for n in range(29,46,1):#列号:SWIR波段共17X=df.iloc[:,i-1]
            Y=df.iloc[:,j-1]
            Z=df.iloc[:,n-1]
            score = (X+X-Y)*(Y-Z)#指数计算公式
            result.append(score)#添加计算结果
            p1=pd.DataFrame(result)
            p1=p1.T#行转置为列,excel最多1.6万列,若计算结果超出列数,把这行注释掉
            p1.to_csv(r'.\result.csv',index=False, mode='w',encoding='utf-8')

下面是结果,原来的第一行是1、2、3、4······,但是为了方便理解,加上了表头,方便后期数据处理寻找最优波段组合。
哈哈哈哈

上面的方法只是记录一下自己在学习过程中的收获,给有相同困扰的同学一个解决的方法,如有不足或者大家有更好的方法都可以在评论区留言,相互学习!

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值