#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). Поиграйте с этим, пока он просто не удалит те строки, которые вас интересуют. Надеюсь, это поможет.