Другой способ сделать то, что вы хотите сделать, это избавиться от вашего цикла, как это:
sample_with_max_ghi = sample.assign(max_ghi=sample.groupby('Hour')['GHI'].transform('max'))
sample_filtered = sample_with_max_ghi[sample_with_max_ghi['GHI'] == sample_with_max_ghi['max_ghi']]
output_sample = sample_filtered.loc[sample_filtered.ne(0).all(axis=1)].drop('max_ghi', axis=1)
output_sample.to_csv('Output.csv')
Некоторые объяснения:
1.
sample_with_max_ghi = sample.assign(max_ghi=sample.groupby('Hour')['GHI'].transform('max'))
Эта строка добавляет новый столбец к вашему фрейму данных, содержащий максимум GHI
столбца для вашей группы Hour
2.
sample_filtered = sample_with_max_ghi[sample_with_max_ghi['GHI'] == sample_with_max_ghi['max_ghi']]
Эта строка фильтрует только те строки, гдезначение GHI
на самом деле является максимумом его Hour
группы
3.
output_sample = sample_filtered.loc[sample_filtered.ne(0).all(axis=1)].drop('max_ghi', axis=1)
и примените последний фильтр, чтобы избавиться от строк с 0 значениями