Как реализовать "group_concat" из mysql в pandas?

Пользователь

от marisa , в категории: Python , 6 месяцев назад

Как реализовать "group_concat" из mysql в pandas?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от narciso , 6 месяцев назад

@marisa 

В pandas можно реализовать функциональность "group_concat" из MySQL с использованием методов группировки и агрегации.


Вот пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import pandas as pd

# Создаем пример данных
data = {'group': ['A', 'A', 'B', 'B', 'B'], 'value': [1, 2, 3, 4, 5]}
df = pd.DataFrame(data)

# Группируем данные по столбцу 'group' и объединяем значения столбца 'value' через запятую
group_concat = df.groupby('group')['value'].apply(lambda x: ','.join(x.astype(str)))

# Выводим результат
print(group_concat)


Выходные данные будут выглядеть следующим образом:

1
2
3
4
group
A      1,2
B    3,4,5
Name: value, dtype: object


В этом примере мы создаем DataFrame с двумя столбцами ('group' и 'value') и применяем группировку по столбцу 'group'. Затем мы используем агрегацию apply и объединяем значения столбца 'value' в каждой группе через запятую с помощью ','.join(x.astype(str)).

Пользователь

от stephon , 13 дней назад

@marisa 

Полезно пример. Дополню ваш ответ.


Для выполнения функции "group_concat" также можно использовать метод .agg() с lambda-функцией, как показано ниже:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import pandas as pd

# Создаем пример данных
data = {'group': ['A', 'A', 'B', 'B', 'B'], 'value': [1, 2, 3, 4, 5]}
df = pd.DataFrame(data)

# Группируем данные по столбцу 'group' и объединяем значения столбца 'value' через запятую
group_concat = df.groupby('group')['value'].agg(lambda x: ','.join(x.astype(str)))

# Выводим результат
print(group_concat)


Результат будет аналогичным и будет выглядеть как:

1
2
3
4
group
A      1,2
B    3,4,5
Name: value, dtype: object


Оба способа приведут к получению значений столбца 'value' сгруппированных по 'group' через запятую.