полное удаление строк NA в файлах Excel с помощью python

#python #excel #pandas #row

Вопрос:

Я создаю программу для объединения файлов excel, и я обнаружил, что в файле Excel так много пустых строк. Я пытаюсь стереть его, но это не работает. Это моя шутка, как и следовало ожидать.

 def btncmd():

    total_df = pd.DataFrame()

    for i in file_content:
        df = pd.read_excel(i)
        total_df = total_df.append(df, ignore_index = True)
 

file_content-это список, содержащий файлы excel. Я также приложу изображение образцов файлов excel.
введите описание изображения здесь

         total_df.dropna(axis=0, how='all')
    total_df
 

Я обнаружил, что в файле Excel так много пробелов. строки excel[2:3] в порядке, но другие пустые строки нужно удалить. Я хочу удалить пустые строки, поэтому я использовал dropna(как = «все»), но это не работает в моем кодировании.

     merged_excel_file = "D:/사업/발주 및 정산/정산/정산서/"  txt_file.get()    ".xlsx"

    total_df.to_excel(merged_excel_file, sheet_name = "sheet", index=False)

    print('생성파일:', merged_excel_file)
 

Я изменил файл csv в файл xlsx и сохранил его. Я хорошо работаю. но заголовок файла excel повторяется, и его следует удалить, кроме первого. Я проверил это в изображении файла excel

 btn = Button(frame_folder, text='클릭', command=btncmd)
btn.pack(side='left', padx=6, pady=5)
 

Ответ №1:

Я думаю, что вы можете просто удалить строки со значениями NaN после выполнения

 df = pd.read_excel(i)
df.dropna(inplace=True)
 

Это должно удалить любую строку, содержащую значение nan. Если вы использовали how=all, то он удалит только строку, в которой все значения nan, т. е. строка с 9 значениями и один столбец, содержащий что-то, не будут удалены.

Вам также нужно включить inplace=True, чтобы он изменил фрейм данных. Если вы этого не сделаете, он не изменит фрейм данных, а вместо этого вернет фрейм данных с удаленными значениями nan.

Комментарии:

1. Я изменил код, но это не то, что я хочу делать. Он стирает все строки. Я хочу удалить строки 6, 17, 18, 26, 27. Вывод file_content будет меняться каждый раз, поэтому будут изменены строки удаления.

2. ОК. Я предполагаю, что у вас есть значение Nan в каждой строке, поэтому оно удаляет все строки. В этом случае, я думаю, вам нужно добавить пороговое значение — попробуйте, например, df.dropna(inplace=True, thresh=2). Поиграйте с этим, пока он просто не удалит те строки, которые вас интересуют. Надеюсь, это поможет.