При испытании мультииндексных фреймов данных мой фрейм данных (с именем итоговый) имеет 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, но я не знаю, как обойти это, и делаю эту операцию только для тех экземпляров, у которых есть ссылка.
Так что у меня фактически есть три вопроса здесь, будучи абсолютным новичком в этом:
- Как я на самом деле выполняю этот вид манипуляций на основе индекса, только для тех случаев, когда существует ссылка?
- Какчтобы распространить эти изменения на исходный фрейм данных или перестроить его из подразделов, над которыми я итерирую?
- Для случаев, когда точки данных не используют эталонную температуру, я хочу использоватьсреднее значение всех эталонных точек данных из случаев, когда совпадают только два других индекса (первые два) (тогда я гарантирую, что будет хотя бы один эталонный пункт данных).Могу ли я сделать это так же, как описано выше?
Конечно, может быть, мой общий подход здесь не самый лучший, и что я должен использовать лучший способ.Если для этого существует несколько жизнеспособных методов, предпочтительнее будет использовать самый быстрый (в вычислительном отношении), поскольку в этом приложении время является проблемой.