Несколько раз применяйте функцию над частью фрейма данных

#python #pandas #dataframe #function #filter

Вопрос:

У меня есть фрейм данных с 4 столбцами: «Дата» (в строковом формате), «Час» (в строковом формате), «Energia_Attiva_Ingresso_Delta» и «Energia_Attiva_Uscita_Delta». Очевидно, что для каждой даты есть несколько часов. Я хотел бы рассчитать столбец для общего фрейма данных, но на ежедневной основе. В принципе: работа функции должна быть рассчитана для каждой отдельной даты. Итак, я подумал о том, чтобы перебрать отдельные значения столбца даты и отфильтровать фрейм данных с помощью .loc, а затем передать отфильтрованный df в функцию. В функции я должен повторно отфильтровать df с помощью loc (для целей расчета).
Вот код, который я написал, и, как вы можете видеть в функции, мне нужно итеративно работать со строкой с максимальным значением «Energia_Ingresso_Delta»; для этого я снова использую .функция loc:

 #function def optimize(df):  min_index = np.argmin(df.Margine)  max_index = np.argmax(df.Margine)    Energia_Prelevata_Da_Rete = df[df.Margine lt; 0]['Margine'].sum().round(1)  Energia_In_Eccesso = df[df.Margine gt; 0]['Margine'].sum().round(1)   carico_medio = (Energia_In_Eccesso / df[df['Margine']lt;0]['Margine'].count()).round(1)   while (Energia_In_Eccesso != 0):     max_index = np.argmax(df.Energia_Ingresso_Delta)   df.loc[max_index, 'Energia_Attiva_Ingresso_Delta'] = df.loc[max_index,'Energia_Attiva_Ingresso_Delta']   carico_medio   Energia_In_Eccesso = (Energia_In_Eccesso - carico_medio).round(1)  #Call function with "partial dataframe". The dataframe is called "prova" for items in list(prova.Data.unique()):   function(prova.loc[[items]])    

Но я продолжаю получать эту ошибку: «Ни один из [индекса([‘2021-05-01′], dtype=’объект’)] не находится в [индексе]» Кто-нибудь может мне помочь? 🙂 Заранее спасибо

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

1. Предоставьте образец данных.

2. Это может быть связано с лишними скобками; это должно быть «функция(prova.loc[элементы])», а не «функция(prova.loc[[элементы]])»