Использование pandas groupby на мультииндексах - как манипулировать данными и распространять изменения в исходный фрейм данных? - PullRequest
0 голосов
/ 19 октября 2018

При испытании мультииндексных фреймов данных мой фрейм данных (с именем итоговый) имеет 7 различных индексов, четвертый из которых - температура.Мои данные [[mean], 'std', 'count']:

                                         Result value
                                                 mean     std    count
Ind0 Ind1 Ind2 Temp Ind4 Ind5 Ind6
V1   1    4.0  70   -1   S11  T40                40.2     2.1        2
               50   -1   S11  T40                20.6     0.5        2
               20   -1   S11  T40                34.1     1.4        2

Я использую groupby следующим образом, чтобы в каждом случае совпадения других индексов использоватьрезультаты для эталонной температуры, добавленной к каждой точке данных (позже эталонные строки можно затем удалить):

   for ind, temp_summary in summary.groupby(level=[0,1,2,4,5,6]):
        temp_summary.loc[['ref_mean','ref_std','ref_count']]=temp_summary.loc[ref_temp,['mean','std','count']]
        print(ind, temp_summary)

Однако я получаю сообщение об ошибке, поскольку ref_temp отсутствует в индексе,это имеет смысл, поскольку не у всех совпадающих экземпляров есть точка данных в ref_temp, но я не знаю, как обойти это, и делаю эту операцию только для тех экземпляров, у которых есть ссылка.

Так что у меня фактически есть три вопроса здесь, будучи абсолютным новичком в этом:

  1. Как я на самом деле выполняю этот вид манипуляций на основе индекса, только для тех случаев, когда существует ссылка?
  2. Какчтобы распространить эти изменения на исходный фрейм данных или перестроить его из подразделов, над которыми я итерирую?
  3. Для случаев, когда точки данных не используют эталонную температуру, я хочу использоватьсреднее значение всех эталонных точек данных из случаев, когда совпадают только два других индекса (первые два) (тогда я гарантирую, что будет хотя бы один эталонный пункт данных).Могу ли я сделать это так же, как описано выше?

Конечно, может быть, мой общий подход здесь не самый лучший, и что я должен использовать лучший способ.Если для этого существует несколько жизнеспособных методов, предпочтительнее будет использовать самый быстрый (в вычислительном отношении), поскольку в этом приложении время является проблемой.

...