Проверьте с помощью
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
Я использовал BCEL и нахожу это действительно довольно неловким. ASM намного лучше. Это очень экстенсивно использует посетителей (который может немного сбивать с толку), и не создает объектную модель. Не создание объектной модели оказывается премией, поскольку любая модель, которую Вы действительно хотите создать, вряд ли будет похожа на литеральную интерпретацию всех данных.
Я использовал BCEL в прошлом, и это было довольно просто в использовании. Это было несколько лет назад, таким образом, может быть что-то лучше теперь.
Я потрясен, что никто еще не упомянул ASM. Это - лучшая библиотека байт-кода, которую могут купить Ваши деньги. Ну, хорошо это свободно.
Из Вашего описания это кажется, что простое отражение было бы достаточно. Можно обнаружить всю статическую структуру класса, а также доступ к полям конкретного экземпляра.
Я только шел бы дальше к BCEL, при попытке перевести инструкции по методу. (И если это - то, что Вы пытаетесь автоматизировать, удачи!),
Я думаю, что javassist мог бы помочь Вам также.
http://www.jboss.org/javassist/
У меня никогда не было потребности использования его, но если бы Вы даете ему попытку, Вы сообщили бы нам свои комментарии об этом?
Хотя я думаю, что это больше для управления байт-кодом, чем .class контроль.
JAD является декомпилятором Java, который не предоставляет программный доступ. Это больше не легко доступно и вероятно не будет работать на более новые проекты с байт-кодами Java7.