Как создать одну таблицу из двух Python?
Помогите, пожалуйста, разобраться как решить задачу Python 3!
Есть 2 таблицы, в которых идет подсчет сообщений, которые пишут пользователи в двух разных чатах. Реализовано как 2 dataframe.
d1= pd.DataFrame({'name': ['Маша', 'Юра', 'Витя'], 'Кол-во': [4, 2, 7]})
d2= pd.DataFrame({'name': ['Витя', 'Маша', 'Юра'], 'Кол-во': [8, 1, 4]})
Первый dataframe – первый чат:
| Имя пользователя | Количество сообщений в чате |
|---|---|
| Маша | 4 |
| Юра | 2 |
| Витя | 7 |
Второй dataframe – второй чат:
| Имя пользователя | Количество сообщений в чате |
|---|---|
| Витя | 8 |
| Маша | 1 |
| Юра | 4 |
Нужно 2 dataframe объединить в один, который будет содержать сведения о пользователе и их количествах сообщений в 2х разных чатах. Результат имеет такой вид:
| Имя пользователя | Количество сообщений в чате 1 | Количество сообщений в чате 2 |
|---|---|---|
| Витя | 7 | 8 |
| Маша | 4 | 1 |
| Юра | 2 | 4 |
Помогите, пожалуйста, разобраться какими методами действовать?
Ответы (1 шт):
Автор решения: Алексей Р
→ Ссылка
Основной метод - merge() - объединяет фреймы по указанному ключевому столбцу. Плюс косметика для приведения в целевой вид.
d1 = pd.DataFrame({'Имя пользователя': ['Маша', 'Юра', 'Витя'], 'Количество сообщений в чате': [4, 2, 7]})
d2 = pd.DataFrame({'Имя пользователя': ['Витя', 'Маша', 'Юра'], 'Количество сообщений в чате': [8, 1, 4]})
out = d1.merge(d2, on='Имя пользователя', suffixes=(' 1', ' 2')).sort_values('Количество сообщений в чате 1', ascending=False)
print(out)
Имя пользователя Количество сообщений в чате 1 Количество сообщений в чате 2
2 Витя 7 8
0 Маша 4 1
1 Юра 2 4