Вы можете векторизовать это с помощью groupby
, apply
и mean
:
def AB_weighted(g):
return (g['A'] * g['B']).sum() / g['B'].sum()
g = df.groupby(df.index.date)
pd.concat([g.apply(AB_weighted), g['C'].mean()], keys=['A', 'C'], axis=1)
A C
2017-09-18 1.000018 250
2017-09-19 1.000030 300
apply
для первого условия, поскольку при групповом вычислении используются несколько столбцов - «А» и «Б». mean()
. Другой вариант - вычисление произведения до groupby
, поэтому мы можем обойти вызов apply
(это немного похоже на второй ответ @WB), но с одним вызовом sum
.
u = df.assign(D=df['A'] * df['B'])[['D', 'B']].groupby(df.index.date).sum()
u['A'] = u.pop('D') / u.pop('B')
u['C'] = df.groupby(df.index.date)['C'].mean()
u
A C
2017-09-18 1.000018 250
2017-09-19 1.000030 300
На эффективности теста сначала приближаются к программированию, Hakan Erdogmus, Maurizio Morisio и Marco Torchiano.
Несмотря на имя это покрывает TDD:
Краткий обзор:
Разработка через тестирование (TDD) основана на формализации части функциональности как тест, реализация функциональности, таким образом, что тест передает, и итерация процесса.
Данная статья описывает управляемый эксперимент для оценки важного аспекта TDD: В TDD программисты пишут функциональные испытания перед соответствующим кодом реализации. Эксперимент проводился со студентами бакалавриата. В то время как группа эксперимента применила тест первая стратегия, контрольная группа применила более стандартный метод разработки, пишущий тесты после реализации. Обе группы следовали за возрастающим процессом, добавляя новые опции по одному и регрессионное тестирование их.
Мы нашли, что тестируют первых студентов, в среднем записал больше тестов и, в свою очередь, студенты, которые записали, больше тестов имело тенденцию быть более продуктивным. Мы также заметили что минимальное качество, увеличенное линейно с количеством тестов программиста, независимых от используемой стратегии развития.
Цифровая библиотека ACM имеет довольно много статей о TDD. Просто Поиск Разработки через тестирование.
Вершина следует из научного исследования Разработки через тестирование Google:
Разработка через тестирование: понятия, таксономия и будущее направление в обществе эпохи компьютеризации IEEE.