Вы можете сделать это в несколько шагов:
- Сортировать по Chat_Sequence_Number
- groupby Case_ID, Interaction_ID и User_Type
- Используйте .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.