Встроенный метод объектов .size()
объектов DataFrameGroupBy фактически возвращает объект Series с размерами группы, а не DataFrame. Если вы хотите, чтобы DataFrame, чей столбец был размером группы, индексированный группами, с настраиваемым именем, вы можете использовать метод .to_frame()
и использовать в качестве аргумента имя требуемого столбца.
grpd = df.groupby(['A','B']).size().to_frame('size')
Если вы хотите, чтобы группы были столбцами снова, вы могли бы добавить .reset_index()
в конец.
Не используйте литералы. Не помещайте данные в текст запроса, поместите их вне запроса как «параметры».
Он имеет ряд преимуществ, таких как более надежный синтаксический анализ, большая проверка типов, большая безопасность и часто более высокая скорость (вы можете подготовить запрос один раз, а затем выполнить его много раз, только изменяя значение параметров).
Способ кодирования параметров в запросах SQL зависит от библиотеки, которую вы используете в своем языке программирования для подключения к Firebird. См. http://bobby-tables.com/ для некоторых примеров. Ниже приведены три часто используемых соглашения:
SELECT .... WHERE t.name_qult = ?
- изначально поддерживается Firebird, доступ к параметрам на основе индекса SELECT .... WHERE t.name_qult = :NAME_PARAM
- стиль BDE / Delphi SELECT .... WHERE t.name_qult = @NAME_PARAM
- стиль MS SQL / .Net Я не знаю, какие разновидности поддерживаются в используемых вами языках и программах. IB Expert использует библиотеки Delphi, поэтому использует параметр # 2. Программы, написанные на Java, используют параметр # 1.
Кроме того, в настройках вашего соединения убедитесь, что для "charset connection" установлено значение UTF-8 или для вьетнамской кодовой страницы, которая может передавать все эти конкретные символы.
Кодировка UNICODE_FSS устарела. Если возможно, было бы лучше перейти на кодировку UTF-8, где это возможно.