"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso inserir uma lista em uma célula específica em um dataframe do Python Pandas?

Como posso inserir uma lista em uma célula específica em um dataframe do Python Pandas?

Publicado em 2024-11-18
Navegar:518

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

Inserir lista em uma célula no dataframe do Python Pandas

Inserir uma lista em uma célula específica em um dataframe do pandas pode ser uma tarefa complicada. Vamos explorar as várias abordagens e possíveis problemas com base no exemplo fornecido:

Problema original:

Um dataframe 'df' com a seguinte estrutura:

    A  B
0  12  NaN
1  23  NaN

e uma lista 'abc' contendo ['foo', 'bar']. O objetivo é inserir esta lista na célula 1B.

Esforços:

  1. df.ix[1,'B'] = abc: Lança um ValueError devido ao comprimento desigual de chaves e valores.
  2. df.ix[1,'B'] = [abc]: Insere uma lista contendo o 'abc' lista em vez de elementos individuais.
  3. df.ix[1,'B'] = ', '.join(abc): Insere uma string em vez de uma lista.
  4. df.ix[ 1,'B'] = [', '.join(abc)]: Insere uma lista de um elemento contendo os elementos unidos string.

Solução:

O método set_value obsoleto foi substituído por at. Usar at garante a definição de um único valor:

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

Considerações adicionais:

  • Certifique-se de que a coluna de destino tenha dtype=object para acomodar a inserção de lista.
  • A mesma abordagem pode ser aplicada para inserir listas em células contendo valores inteiros ou string.
  • No entanto, ao inserir uma lista em uma coluna contendo tipos de dados mistos (inteiro e string), um ValueError pode ocorrer. Isso pode ser resolvido convertendo a coluna para dtype=object antes da inserção.

Exemplo atualizado:

Inserindo a lista 'abc' em df2.loc[ 1,'B'] e 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']
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3