作者MAGICXX (逢甲阿法)
看板Python
标题[问题] 缩减程式码以及PANDAS问题
时间Mon Apr 19 16:31:54 2021
大家好
1.
我现在有一组程式码有问题
upperb=NDVI_LST[col[0]]>0.0
lowerb=NDVI_LST[col[0]]<0.1
edge_1=NDVI_LST[(upperb & lowerb)]
lst_values=[]
for i in edge_1[col[0]]:
LST=NDVI_LST.loc[NDVI_LST[col[0]]==i,col[1]]
NDVI=i
for j in LST.values:
lst_values.append(j)
df.loc[0.0,'w1月']=max(lst_values)
lst_values=[]
for i in edge_1[col[0]]:
LST=NDVI_LST.loc[NDVI_LST[col[0]]==i,col[1]]
NDVI=i
for j in LST.values:
lst_values.append(j)
df.loc[0.0,'d1月']=min(lst_values)
因为我现在会需要有12个月的重复计算以及
upperb以及lowerb的重复计算(0.0 ,0.1, 0.2, 0.3.....1.0)
原本我是用下面的code跑 可是每次都会剩下最後一个值然後把前面的值盖掉
NDVI_bound=np.around(np.linspace(0,1,11).tolist(),decimals=2)
for k in range(1,13):
for j in range(23):
for i in range(10):
upperb=NDVI_LST[col[int(j)]]>NDVI_bound[int(i)]
lowerb=NDVI_LST[col[int(j)]]<NDVI_bound[int(i)+1]
edge_1=NDVI_LST[(upperb & lowerb)]
lst_values=[]
for l in edge_1[col[int(j)]]:
LST=NDVI_LST.loc[NDVI_LST[col[int(j)]]==l,col[int(j)+1]]
NDVI=i
for m in LST.values:
lst_values.append(m)
if lst_values==[]:
df.loc[NDVI_bound[int(i)+1],'w'+str(k)+'月']=0
df.loc[NDVI_bound[int(i)+1],'d'+str(k)+'月']=0
else:
df.loc[NDVI_bound[int(i)+1],'w'+str(k)+'月']=max(lst_values)
df.loc[NDVI_bound[int(i)+1],'d'+str(k)+'月']=min(lst_values)
我想问一下大家 这样要怎麽缩减这个程式码才会是对的?
不然我光是用一个一个贴 就要2000多行程式码 可是明明是重复做一样的动作...
2.查表
我找的值是从上面那张表出来的
D1 W1
0.1 23.7 22.4
0.2 25.8 26.88
0.3 29.8 30.64
.
.
.
1.0 35.26 38.31
我现在给他一个值 他要怎麽找到在这张表的哪个范围?
比如说 我现在给他27.33这个数值 他要怎麽找到是在0.2~0.3之间
然後跟我说上限是29.8 下限是25.8 这样?
有两个问题 再麻烦各位了QQ
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.134.51.64 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1618821116.A.0F5.html
1F:推 TitanEric: 第一个感觉if else那区块要缩进去2个tab 04/19 17:44
2F:→ TitanEric: 不然都会读到最後一个i 04/19 17:45
3F:推 TitanEric: 第二个可以参考interval Index 04/19 17:51
4F:推 aassdd926: 听起来需要写成function 04/19 22:16