首页 > 解决方案 > 按名称分组然后按日期排序后连接字符串

问题描述

我在数据框中有这些数据


data = [
           {'name' : 'a', 'date' : '2020-01-02', 'message' : 'there'},
           {'name' : 'b', 'date' : '2020-01-01', 'message' : 'Hello'},
           {'name' : 'a', 'date' : '2020-01-01', 'message' : 'Hi'},
           {'name' : 'b', 'date' : '2020-01-03', 'message' : 'everyone'},
           {'name' : 'c', 'date' : '2020-01-05', 'message' : 'Test'}
       ]

我想做的是按名称分组,然后按日期排序,并为每个名称连接消息,以便数据看起来像这样

[
   {'name' : 'a', 'message' : 'Hi there'},
   {'name' : 'b', 'message' : 'Hello everyone'},
   {'name' : 'c', 'message' : 'Test'}
]

我已经能够使用这个按名称分组并按日期排序(在将字符串变成日期时间对象之后)

df.groupby(['name']).apply(lambda x: x.sort_values(['date'])

但是我不确定在对数据进行分组和排序后如何将字符串连接在一起。

标签: pythonpandassortingpandas-groupbystring-concatenation

解决方案


尝试apply_join

df.sort_values('date').groupby('name')['message'].apply(' '.join).reset_index()

  name         message
0    a        Hi there
1    b  Hello everyone
2    c            Test

推荐阅读