Объедините несколько строк в pandas фрейме данных и сгруппируйте их по столбцам - PullRequest
1 голос
/ 05 марта 2020

Вот так выглядит мой pandas фрейм данных. Мое требование - объединить столбец высказываний на основе User_type и отсортировать по Chat_sequence_number и сгруппировать их по case_id и Interaction_id

       Case_ID    Interaction_ID  Chat_Sequence_Number User_Type        Utterances
          1          123                   3           Person1            are
          1          123                   4           Person1              you
          1          123                   1           Person1              Hello,
          1          123                   2           Person1              how
          1          123                   5           Person1              feeling?
          1          123                   6           Person2              I'm
          1          123                   6           Person2              fine.

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

Case_ID Interaction_ID User_Type utterance 1 123 Person1 Здравствуйте, как вы себя чувствуете? 1 123 человека1 Я в порядке.

1 Ответ

0 голосов
/ 05 марта 2020

Вы можете сделать это в несколько шагов:

  1. Сортировать по Chat_Sequence_Number
  2. groupby Case_ID, Interaction_ID и User_Type
  3. Используйте .apply () для объединения Строки

Эта работа выполняется в одну строку ниже

import pandas as pd

# Create the dataframe
df = pd.DataFrame(columns=['Case_ID','Interaction_ID','Chat_Sequence_Number','User_Type','Utterances'])
df['Utterances'] = 'are','you','Hello','how','feeling?',"I'm",'fine.'
df['User_Type'] = ['Person1']*5+['Person2']*2
df['Chat_Sequence_Number'] = 3,4,1,2,5,6,7
df['Case_ID'] = 1
df['Interaction_ID'] = 123

# Do the grouping
output = df.sort_values(['Chat_Sequence_Number']).groupby(['Case_ID','Interaction_ID','User_Type'])['Utterances'].apply(' '.join).reset_index()
print(output)

Вывод:

   Case_ID  Interaction_ID User_Type                  Utterances
0        1             123   Person1  Hello how are you feeling?
1        1             123   Person2                    I'm fine.
...