Вы можете сделать:
df['cum_sum_interval_3'] = df.groupby([df.Name, df.groupby('Name')['Values'].cumcount() // 3])['Values'].transform('mean')
Или, если вы предпочитаете пошаговые инструкции:
df['name_idx'] = df.groupby('Name')['Values'].cumcount() // 3
df['cum_sum_interval_3'] = df.groupby(['Name', 'name_idx'])['Values'].transform('mean')
result = df.drop('name_idx', axis=1)
print(result)
Выход
Name Values cum_sum_interval_3
0 A 1 2.000000
1 A 2 2.000000
2 A 3 2.000000
3 B 1 3.666667
4 B 2 3.666667
5 C 3 3.000000
6 A 2 4.000000
7 A 6 4.000000
8 B 8 3.666667
9 B 3 3.000000
[117 ] Утверждение:
df.groupby('Name')['Values'].cumcount() // 3
создает группы примерно 3 размера внутри каждой группы.
Существуют некоторые различия между Lex и Flex, но необходимо оскорблять Lex для столкновения с проблемами с Flex. (У меня есть программа, которая оскорбляет Lex и не работает под Flex, поэтому.) Это находится, прежде всего, в области входного предвидения; в Lex можно предоставить собственный входной код и изменить символьный поток; Flex не позволит Вам сделать это.
Yacc и Бизон достаточно близко совместимы, хотя у Бизона есть некоторые дополнительные приемы, он может сделать.
Вы, вероятно, не можете найти законные копии (оригинал, AT& T версии) Lex и Yacc для установки на Ubuntu. Я не обязательно сказал бы, что это невозможно, но я не знаю о таком. Flex и Бизон легко доступны и эквивалентны в большинстве целей. Можно также найти различную альтернативу и приблизительно эквивалентные программы от мира BSD.
Lex и Yacc сохраняются Unix лицензиаты SVRx - компании, такие как IBM (AIX), HP (HP-UX) и Sun (Солярис) изменили версии Lex и Yacc при их команде. MKS также предоставляет Lex MKS и Yacc MKS; однако, у Yacc, по крайней мере, есть некоторые нестандартные расширения.
Flex и Бизон свободны. (AT& T) Lex и Yacc не.
Бизон является реализацией/расширением GNU Yacc, Flex является преемником Lex. В любом случае (и рекомендовано) хорошо использовать бизона / гибкий провод.
В большинстве (всех?) Linux-систем «Lex» на самом деле является символической ссылкой на flex. По сути, это только другое имя для бесплатной версии.
YACC доступен по лицензиям с открытым исходным кодом как в Plan 9, так и в Open Solaris. Также существует Berkeley YACC, который совместим с исходным YACC, но не имеет исходного кода. Berkeley YACC можно найти в любой из операционных систем BSD с открытым исходным кодом.