"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo insertar una lista en una celda específica en un marco de datos de Python Pandas?

¿Cómo puedo insertar una lista en una celda específica en un marco de datos de Python Pandas?

Publicado el 2024-11-18
Navegar:616

How Can I Insert a List into a Specific Cell in a Python Pandas Dataframe?

Insertar lista en una celda en un marco de datos de Python Pandas

Insertar una lista en una celda específica en un marco de datos de Pandas puede ser una tarea complicada. Exploremos los diversos enfoques y posibles problemas según el ejemplo dado:

Problema original:

Un marco de datos 'df' con la siguiente estructura:

    A  B
0  12  NaN
1  23  NaN

y una lista 'abc' que contiene ['foo', 'bar']. El objetivo es insertar esta lista en la celda 1B.

Esfuerzos:

  1. df.ix[1,'B'] = abc: arroja un ValueError debido a la longitud desigual de claves y valores.
  2. df.ix[1,'B'] = [abc]: inserta una lista que contiene la lista 'abc' en lugar de elementos individuales.
  3. df.ix[1,'B'] = ', '.join(abc): Inserta una cadena en lugar de una lista.
  4. df.ix[1 ,'B'] = [', '.join(abc)]: Inserta una lista de un elemento que contiene los elementos unidos string.

Solución:

El método obsoleto set_value ha sido reemplazado por at. El uso de at garantiza establecer un valor único:

df.at[1, 'B'] = ['foo', 'bar']

Consideraciones adicionales:

  • Asegúrese de que la columna de destino tenga dtype=object para acomodar la inserción de la lista.
  • Se puede aplicar el mismo enfoque para insertar listas en celdas que contiene valores enteros o de cadena.
  • Sin embargo, al insertar una lista en una columna que contiene tipos de datos mixtos (enteros y cadenas), puede ocurrir un ValueError. Esto se puede resolver convirtiendo la columna a dtype=object antes de la inserción.

Ejemplo actualizado:

Insertar la lista 'abc' en df2.loc[ 1,'B'] y df3.loc[1,'B']:

df2 = pd.DataFrame({
    'A': [12],
    'B': [nan],
    'C': ['bla']
})

df3 = pd.DataFrame({
    'A': [12],
    'B': [nan],
    'C': ['bla bla'],
    'D': [['item1', 'item2'], [11, 12, 13]]
})

df2.loc[1, 'B'] = ['foo', 'bar']
df3.loc[1, 'B'] = ['foo', 'bar']
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3