Jak spadać pustych wierszy przy użyciu funkcji to_excel w Pythonie

głosy
0

Mam dataframe z niektórych danych demograficznych i niektórych odpowiedziach tekstowych badanie. Chcę eksportować każdą kolumnę danych odpowiedzi wraz z kilkoma polami demograficznych do różnych plików Excel na podstawie jednego z pól demograficznych. Mam kod, który może zrobić wszystko. Brakujący kawałek spada wiersze z nan pisząc do Excela.

Próbowałem tworzenie oddzielnych dataframes dla każdego pytania i upuszczanie tamtejszym Nans, które pracowały. Wtedy nie byłem pewien, jak doprowadzić je z powrotem razem napisać do programu 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()

Przykładowy kod należy utworzyć dwa pliki Excel, jeden dla School1 i jeden dla School2. Każdy plik będzie miał trzy występy, po jednym dla każdego pytania (Q1, Q2, Q3). Jak widać Q1 i Q3 ma wartości NaN, które są pisane jako półfabrykatów do programu Excel. Nie chcę te wiersze mają być zapisane do programu Excel. Oczywiście ci ludzie odpowiedział inne pytania, które chcę napisanych do programu Excel.

Utwórz 10/10/2019 o 00:50
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
0

W kodzie, trzeba użyć .dropna().

Na przykład: df_.dropna()

Trzeba będzie określić howw dropnaargs.

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

Eksperymentować z tym argumentem i powinieneś dostać to, co chcesz.

Odpowiedział 10/10/2019 o 00:53
źródło użytkownik

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