Каково различие между Flex/законом и Yacc/Bison?

Вы можете сделать:

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 размера внутри каждой группы.

116
задан greatwolf 2 February 2015 в 02:56
поделиться

4 ответа

Существуют некоторые различия между 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 не.

77
ответ дан Jonathan Leffler 24 November 2019 в 02:18
поделиться

Бизон является реализацией/расширением GNU Yacc, Flex является преемником Lex. В любом случае (и рекомендовано) хорошо использовать бизона / гибкий провод.

32
ответ дан Jan Jungnickel 24 November 2019 в 02:18
поделиться

В большинстве (всех?) Linux-систем «Lex» на самом деле является символической ссылкой на flex. По сути, это только другое имя для бесплатной версии.

10
ответ дан 24 November 2019 в 02:18
поделиться

YACC доступен по лицензиям с открытым исходным кодом как в Plan 9, так и в Open Solaris. Также существует Berkeley YACC, который совместим с исходным YACC, но не имеет исходного кода. Berkeley YACC можно найти в любой из операционных систем BSD с открытым исходным кодом.

9
ответ дан 24 November 2019 в 02:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: