Я хочу проверить, все ли данные в пределах кадра данных от верхнего левого угла кадра данных до самого нижнего правого элемента завершены (данные должны быть заполнены в виде прямоугольника).Если у него есть пустые столбцы или строки после основной части данных, это нормально (и оно будет иметь это).
Ниже приведены примеры хороших и плохих фреймов данных:
bad_dataframe = pd.DataFrame([[1,1,1,""],["","","",""],[1,"",1,""],["","","",""]])
good_dataframe = pd.DataFrame([[1,1,1,""],[1,1,1,""],[1,1,1,""],[1,1,1,""],["","","",""]])
СпособЯ сделал это следующим образом
def not_rectangle_data(DataFrame):
"""
This function will check if the data given to it is a "rectangle"
"""
#removes all rows and columns that contain only blanks
reduced_dataframe = DataFrame[DataFrame != ""].dropna(how="all",axis = 1).dropna(how="all",axis = 0)
#removes all rows and columns that contain any blanks
super_reduced_dataframe = reduced_dataframe.dropna(how="any",axis = 1).dropna(how="any",axis = 0)
#Check that dataframe is not empty and that no column or no rows are half empty
if not reduced_dataframe.empty and \
super_reduced_dataframe.equals(reduced_dataframe):
#Check that columns in remain data are still present
if ((max(reduced_dataframe.index) + 1) == reduced_dataframe.shape[0]) and \
((max(reduced_dataframe.columns) + 1) == reduced_dataframe.shape[1]):
return True
else:
return False
else:
return False
Однако я чувствую, что должен быть более краткий способ сделать это.
Большое спасибо