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.
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.
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.
É 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]
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