TypeError: Nonselast non planifié int Object

Comment puis-je résoudre cette erreur après avoir démarré mon code comme suit . J'utilise la fonction ci-dessous et implémente le lancement window for loop Sur elle, mais en fin de compte, obtenez une erreur ci-dessous. for loop Travaille et brûle à un moment donné.


def get_grps/s, thresh=-1, Nmin=3/:
"""
Nmin : int > 0
Min number of consecutive values below threshold.
"""
m = np.logical_and.reduce/[s.shift/-i/.le/thresh/ for i in range/Nmin/]/
if Nmin > 1:
m = pd.Series/m, index=s.index/.replace/{False: np.NaN}/.ffill/limit=Nmin - 1/.fillna/False/
else:
m = pd.Series/m, index=s.index/

# Form consecutive groups
gps = m.ne/m.shift/1//.cumsum//.where/m/

# Return None if no groups, else the aggregations
if gps.isnull//.all//:
return 0
else:

agg = s.groupby/gps/.agg/[list, sum, 'size']/.reset_index/drop=True/
# agg2 = s2.groupby/gps/.agg/[list, sum, 'size']/.reset_index/drop=True/

return agg, gps


data_spi = [-0.32361498 -0.5229471 0.15702732 0.28753752 -0.01069884 -0.8163699
-1.3169327 0.4413181 0.75815576 1.3858147 0.49990863-0.06357133
-0.78432 -0.95337325 -1.663739 0.18965477 0.81183237 0.8360347
0.99537593 -0.12197364 -0.31432647 -2.0865853 0.2084263 0.13332903
-0.05270813 -1.0090573 -1.6578217 -1.2969246 -0.70916456 0.70059913
-1.2127264 -0.659762 -1.1612778 -2.1216285 -0.8054617 -0.6293912
-2.2103117 -1.9373081 -2.530625 -2.4089663 -1.950846 -1.6129876]
lon = data_spi.lon
lat = data_spi.lat
print/len/data_spi//

n=6


for x in range/len/lat//:
for y in range/len/lon//:
if data_spi[0, x, y] != 0:

for i in range/len/data_spi/-70/:
ts = data_spi[i:i+10, x, y].fillna/1/
print/ts/
# print/np.array/ts//



agg, gps = get_grps/pd.Series/ts/, thresh=-1, Nmin=3/

duration = np.nanmean/agg['sum']/
frequency = len/agg['sum']/
severity = np.abs/np.mean/agg['sum']//
intensity = np.mean/np.abs/agg['sum'] / agg['size']//
print/f'intensity {intensity}'/


Je reçois cette erreur


Traceback /most recent call last/:
File "/Users/mada0007/PycharmProjects/Research_ass /FREQ_MEAN_INT_DUR_CORR.py", line 80, in <module>
agg, gps = get_grps/pd.Series/ts/, thresh=-1, Nmin=3/
typeError: cannot unpack non-iterable int object


Comment puis-je éliminer cette erreur ?
</module>
Invité:

Georges

Confirmation de:

Il suffit de remplacer return 0 sur le return 0, 0 ou mieux: appelez l'erreur au lieu de retourner 0

Quand votre condition est
if

Vrai, vous ne revenez que
0

. Puis plus tard quand vous faites
agg, gps = get_grps/.../

, vous dites python Déballez le résultat de la fonction. Puis python En attente de longueur d'itération 2 et essayer de le déballer, mais comme il le dit: il "Ne peut pas déballer Nonselast Int-Object"...

Ainsi, une solution de contournement rapide est que , Pour retourner le tuple /0, 0/ avec
return 0, 0

, Mais c'est plutôt mauvais parce que vous retournez des entiers où des objets sont attendus. Votre script échoue sur la ligne suivante.
duration = np.nanmean/agg['sum']/

/car
agg

également 0/.

Certaines solutions plus propres pour le traitement de ce cas seraient de le décompresser pour la deuxième fois:


def get_grps/s, thresh=-1, Nmin=3/:
# ...
if gps.isnull//.all//:
return None
else:
# ...
return agg, gps

for i in range/len/data_spi/-70/:
ts = data_spi[i:i+10, x, y].fillna/1/

result = get_grps/pd.Series/ts/, thresh=-1, Nmin=3/
if result is None:
break

agg, gps = result

duration = np.nanmean/agg['sum']/
frequency = len/agg['sum']/

Pour répondre aux questions, connectez-vous ou registre