Python: maneja KeyError usando .loc() en el marco de datos

CorePress2024-01-25  335

Estoy configurando una columna basada en una lista de índices, que calculé anteriormente. También eliminé algunos índices durante los cálculos, por lo que algunos índices ya no forman parte de mi marco de datos. Este ejemplo simplificado muestra lo que está sucediendo ahora:

df = pd.DataFrame(data=[[1 , 2, False], [4 , 5, False]], columns=["col1", "col2", "col3"], index=[1, 3])

df.loc[[1, 2], 'col3'] = True

Obviamente estoy recibiendo un KeyError:

KeyError: '[2] not in index'

Desafortunadamente, .loc() no proporciona algo como error="ignorar". ¿Sería iterar sobre la lista detectando el KeyError con un bloque try-catch la única solución o hay una manera mejor de hacerlo?

¿Alguna pista? Gracias



------------------------------------

Puedes usar .index.intersection() para seleccionar sólo "buenosteclas":

good_keys = df.index.intersection([1, 2])
df.loc[good_keys, "col3"] = True

print(df)

Impresiones:

   col1  col2   col3
1     1     2   True
3     4     5  False

0



------------------------------------

reindexar

Coloca filas o columnas nulas donde los valores de índice no existían antes.

df = df.reindex([1, 2, 3])
df.loc[[1, 2], 'col3'] = True

df

   col1  col2   col3
1   1.0   2.0   True
2   NaN   NaN   True
3   4.0   5.0  False

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare