Como a queda linhas vazias ao utilizar a função to_excel em Python

votos
0

Eu tenho uma trama de dados com alguns dados demográficos e algumas respostas de texto de pesquisa. Quero exportar cada coluna de dados de resposta junto com alguns campos demográficos para um diferente arquivos do Excel com base em um dos campos demográficos. Eu tenho o código que pode fazer tudo isso. A peça que faltava está caindo linhas com nan ao escrever para o Excel.

Eu tentei criar dataframes separadas para cada pergunta e soltando os nans lá, que funcionou. Então, eu não tinha certeza de como trazê-los de volta juntos para escrever para o Excel.

# Sample dataframe
df = pd.DataFrame({'ID' : ['1','2','3','4'],
                   'School': ['School1', 'School1', 'School2', 'School2'], 
                   'Sex': ['M', 'M', 'F', 'F'],
                   'Q1' : ['Black', np.nan, 'White', 'White'],
                   'Q2' : ['Good', 'Good', 'Bad', 'Bad'],
                   'Q3' : ['Up', 'Up', np.nan, 'Down']})

# Create output
output = df[['ID','School','Sex','Q1','Q2','Q3']].groupby('School')

# Loop to write to Excel files
for school, df_ in output:
    writer = pd.ExcelWriter(f'school_{school}_tabs.xlsx', engine='xlsxwriter')
    df_[['School','Sex','Q1']].to_excel(writer, sheet_name='Q1')
    df_[['School','Sex','Q2']].to_excel(writer, sheet_name='Q2')
    df_[['School','Sex','Q3']].to_excel(writer, sheet_name='Q3')
    writer.save()

O código de exemplo deve criar dois arquivos do Excel, um para School1 e um para School2. Cada arquivo terá três guias, uma para cada pergunta (Q1, Q2, Q3). Como você pode ver Q1 e Q3 possuem valores Nan, que são escritos como espaços em branco para o Excel. Eu não quero que as linhas a serem gravados para Excel. Obviamente essas pessoas respondeu outras perguntas, que eu quero escritos para o Excel.

Publicado 10/10/2019 em 00:50
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

Em seu código, você precisa usar .dropna().

Por exemplo: df_.dropna()

Você precisará determinar hownos dropnaargumentos.

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.dropna.html

Experimentar com esse argumento e você deve obter o que deseja.

Respondeu 10/10/2019 em 00:53
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more