"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 inserir com sucesso uma lista em uma célula DataFrame em Python?

Como inserir com sucesso uma lista em uma célula DataFrame em Python?

Publicado em 2024-11-07
Navegar:634

How to Successfully Insert a List into a DataFrame Cell in Python?

Inserindo uma lista em uma célula em um DataFrame

Ao lidar com dados esparsos em pandas Python, pode ser um desafio inserir listas em células específicas. Tentar tais operações usando métodos comuns como df.ix[1,'B'] = abc geralmente leva a erros devido a comprimentos de chave incompatíveis.

Soluções e limitações alternativas

Tentativas de contornar o problema erro ao colocar a lista entre colchetes adicionais (por exemplo, df.ix[1,'B'] = [abc]) ou usar representações de string (por exemplo, df.ix[1,'B'] = ', '.join (abc)) são insatisfatórios, pois introduzem elementos adicionais ou alteram a estrutura de dados pretendida.

Usando df.at para inserção de lista

Uma abordagem mais eficaz é usar df.at em vez de df.ix ou df.loc. df.at visa especificamente uma única célula, eliminando a ambigüidade que pode levar aos erros mencionados acima.

import pandas as pd

# Create a dataframe with mixed data types
df = pd.DataFrame(data={'A': [1, 2, 3], 'B': ['x', 'y', 'z']})

# Insert a list into cell 1B
df.at[1, 'B'] = ['m', 'n']

print(df)

Esta operação insere ['m', 'n'] com sucesso na célula 1B sem nenhum erro.

Garantindo a compatibilidade do tipo D da coluna

É importante observar que a coluna na qual você pretende inserir a lista deve ter seu dtype definido como 'objeto'. Se a coluna tiver um dtype diferente, como 'int64', ocorrerá um erro. Para resolver isso, você pode converter o dtype da coluna antes de tentar a inserção:

df = pd.DataFrame(data={'A': [1, 2, 3], 'B': [1,2,3]})
df['B'] = df['B'].astype('object')

# Now, list insertion will work as expected
df.at[1, 'B'] = [1, 2, 3]
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