在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话语1 123 Person1您好,您感觉如何?1123人1我很好。

毛雷拉

您可以按照以下步骤进行操作:

  1. 依Chat_Sequence_Number排序
  2. 按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.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章