Вы должны войти через Консольный объект console.log("My log");
$("#click").click(function(){
console.log("Clicked");
});
Вы можете векторизовать это с помощью 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
Проверьте с помощью
df.groupby(df.index.date).apply(lambda x : pd.Series({'A':sum(x['A']*x['B'])/sum(x['B']),'C':(x['C']).mean()}))
A C
2017-09-18 1.000018 250.0
2017-09-19 1.000030 300.0
Или давайте не будем использовать apply
t1=df.eval('A*B').groupby(df.index.date).sum()/df.groupby(df.index.date).B.sum()
t2=df.groupby(df.index.date).C.mean()
pd.concat([t1,t2],1)
0 C
2017-09-18 1.000018 250
2017-09-19 1.000030 300