Использование сводных таблиц для отслеживания журнала пользовательских чатов

#python-3.x #pandas #group-by #pivot-table

#python-3.x #pandas #групповое #сводная таблица

Вопрос:

У меня есть платформа, отслеживающая несколько чатов с клиентами и представителями. Я хочу создать фреймы данных, содержащие всю историю заказанных чатов одного клиента.

Вот ссылка на пример данных

И для краткой справки:

 Convo Room      Date        Message Order       User ID     Role        Chat contents
A1      3-Oct-17        1       JOHN        CUSTOMER        Hi, can you help?
A1      4-Oct-17        2       ALICE       REP     Sure, what's up?
A1      5-Oct-17        3       JOHN        CUSTOMER        I have warts.
A1      6-Oct-17        4       JOHN        CUSTOMER        Please don't hang up, it's just warts.
B1      7-Oct-17        1       JOHN        CUSTOMER        Hi, can YOU help?
B1      8-Oct-17        2       MARY        REP     Sure, I heard about Alice.
B1      9-Oct-17        3       MARY        REP     I also have warts.
B1      10-Oct-17       4       JOHN        CUSTOMER        Oh, nevermind then, gotta go.
C1      7-Oct-17        1       JIM     CUSTOMER        Hi, can you help?
C1      8-Oct-17        2       ALICE       REP     Maybe, what's up?
C1      9-Oct-17        3       JIM     CUSTOMER        Not warts.
C1      10-Oct-17       4       ALICE       REP     Good, that's the only thing I cannot handle.
D1      15-Oct-17       1       JOHN        CUSTOMER        Hi, pls help. Warts.
D1      16-Oct-17       2       JUDE        REP     Perfect, I cure them!
D1      17-Oct-17       3       JUDE        REP     …with fire.
D1      18-Oct-17       4       JUDE        REP     Are you still there? Dang, lost another one.

  

На мой взгляд, первым шагом является упорядочение данных с помощью сводных таблиц. Далее я могу сосредоточиться на разделении чатов на фреймы данных для анализа настроений или других показателей.

Я полагаю, что я близок к этому, но я продолжаю ошибаться в части сортировки.

Что у меня есть на данный момент:

 df = test.pivot_table(index=['Role', 'User ID', 'Date', 'Convo Room', 'Message Order'],columns=["Role"],aggfunc='first')
df.head()
  

Который возвращает следующее:
почти, но без сигары
Используя Excel, я считаю, что в целом это то, что я хочу, хотя я уверен, что есть много способов визуализировать это:

цель

Ответ №1:

Вы на правильном пути, просто нужно убедиться, что вы передаете правильный столбец в pivot_table

 df.pivot_table(index=[ 'User ID', 'Convo Room', 'Message Order'],columns=["Role"],values='Chat contents',aggfunc='first')
  

Комментарии:

1. почти, но это тоже не совсем так. Идентификаторы пользователя отсортированы, но, похоже, я все еще не могу заставить сообщения перемещаться туда и обратно внутри идентификатора пользователя. Я не уверен, что есть способ повторно ссылаться на тот же идентификатор пользователя внутри сводной таблицы, на который ранее ссылались!