Общественный номер: You Er Hut
Автор: Питер
Редактор: Питер
Всем привет, меня зовут Питер~
Эта статья — третья статья, сравнивающая SQL для изучения Pandas, в основном объясняет, как использовать pandas для реализации SQL в SQL.group_concatработать.
group_concat
Какова функция group_concat в SQL или MySQL? См. пример для иллюстрации.
Ниже приведены простые данные, хранящиеся в таблице информации, двух полях id и name:
+----+-----+
| id | name |
+------+---+
|1 | 10 |
|1 | 20 |
|1 | 20 |
|2 | 20 |
|3 | 200 |
|3 | 500 |
Способ 1: ситуация по умолчанию
Группируем по id, ставим имя на той же строке и разделяем запятой:
select
id
,group_concat(name) as name
from information
group by id;
Результат:
|id| name|
|1 |10,20,20|
|2 |20 |
|3 |200,500|
Способ 2: укажите символ
Приведенные выше результаты разделены запятыми (английскими запятыми) по умолчанию, также мы можем сами указать символы:
select
id
,group_concat(name separator ';') as name
from information
group by id;
Результат отображается как:
|id| name|
|1 |10;20;20| -- 分号隔开
|2 |20 |
|3 |200;500|
Способ 3: дедублировать отображение
Мы также можем сгруппировать по id, удалить лишние (дублирующиеся) данные, а остальные собрать воедино, например, данные с id=1 повторяются по 20, а мы хотим отобразить только одну 20:
Добавлено ключевое слово отличное:
select
id
,group_concat(distinct name) as name
from information
group by id;
Соответствующие результаты отображаются как:
|id| name|
|1 |10,20| -- 只显示了一个20
|2 |20 |
|3 |200,500|
Способ 4: Сортировка по убыванию
Во всех вышеперечисленных случаях данные расположены в порядке возрастания, мы также можем расположить их в порядке убывания:
select
id
,group_concat(name order by name desc) as name
from information
group by id;
Тогда отображаемый результат:
-- 结果已经降序排列了
|id| name|
|1 |20,20,10|
|2 |20 |
|3 |500,200|
Вышеупомянутое является результатом различных реализаций group_concat, которые реализованы с использованием приведенных ниже панд.
Данные моделирования
import pandas as pd
import numpy as np
df = pd.DataFrame({
"name":["小明","小明","小明","小红","小张","小张"],
"score":[10,20,20,20,200,500]
})
df
Понятно, что нам нужно сгруппировать оценки Сяомин, Сяохун и Сяочжан вместе.
Способ 1: группировка по умолчанию
Реализуйте ситуацию группировки по умолчанию, сортируя по возрастанию без дедупликации. В основном 3 шага:
1. Группировать по группам
2. После группировки поместите все партитуры в список через список
3. Третий шаг — просто переставить индекс
Способ 2: укажите символ
Чтобы указать конкретные символы, мы используем функцию соединения. Поскольку эта функция может работать только со строками, нам нужно преобразовать числовые данные в df в строки:
df.astype(str)
Способ 3: дедублировать отображение
Сгруппируйте по полю имени, а затем используйте уникальную функцию для оценки. Следующее просто так переставлено
Способ 4: Сортировка по убыванию
1. Сначала мы реализуем порядок возрастания по умолчанию
2. Снова используйте функцию применения в поле оценки и используйте функцию сортировки в списке для достижения убывающего порядка.
Дорогие друзья, вы узнали?