Come eliminare righe vuote quando si utilizza la funzione to_excel in Python

voti
0

Ho un dataframe con alcuni dati demografici e alcune risposte di testo sondaggio. Voglio esportare ogni colonna di dati di risposta insieme ad alcuni campi demografici a un diverso file di Excel basati su uno dei campi demografici. Ho codice che può fare tutto questo. Il pezzo mancante è in calo le righe con nan durante la scrittura in Excel.

Ho cercato di creare dataframes separati per ogni domanda e rilasciando le nans là, che ha lavorato. Allora non ero sicuro di come riportarli insieme per scrivere a 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()

Il codice di esempio dovrebbe creare due file di Excel, uno per School1 e uno per School2. Ogni file avrà tre schede, una per ogni domanda (Q1, Q2, Q3). Come si può vedere Q1 e Q3 hanno valori Nan, che vengono scritti come spazi vuoti in Excel. Non voglio le righe da scrivere Excel. Ovviamente queste persone hanno risposto ad altre domande, che io voglio scritto in Excel.

È pubblicato 10/10/2019 alle 00:50
fonte dall'utente
In altre lingue...                            


1 risposte

voti
0

Nel codice, è necessario utilizzare .dropna().

Per esempio: df_.dropna()

Sarà necessario stabilire hownei dropnaargs.

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

Esperimento con tale argomento e si dovrebbe ottenere quello che vuoi.

Risposto il 10/10/2019 a 00:53
fonte dall'utente

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