Python 将行合并到按日期排序的列表中

Python 将行合并到按日期排序的列表中,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个熊猫数据框,它有几个唯一的ID和文本。我正试着把按日期排序的文本组合起来 +-----------+---------------------+------+ | unique_id | date | data | +-----------+---------------------+------+ | 1 | 2010-05-19 21:30:27 | a | +-----------+---------------------+--

我有一个熊猫数据框,它有几个唯一的ID和文本。我正试着把按日期排序的文本组合起来

+-----------+---------------------+------+
| unique_id | date                | data |
+-----------+---------------------+------+
| 1         | 2010-05-19 21:30:27 | a    |
+-----------+---------------------+------+
| 1         |                     | b    |
|           | 2010-05-21 01:36:23 |      |
+-----------+---------------------+------+
| 1         |                     | c    |
|           | 2010-05-23 06:46:23 |      |
+-----------+---------------------+------+
理想情况下,我尝试将数据中的行合并到一个列表中,按日期排序

大概是这样的:

+-----------+------------------------------------------------------------------+-----------+
| unique_id | date                                                             | data      |
+-----------+------------------------------------------------------------------+-----------+
| 1         | [2010-05-19 21:30:27, 2010-05-21 01:36:23, 2010-05-23 06:46:23]  | [a, b, c] |
+-----------+------------------------------------------------------------------+-----------+
我目前正在按日期对数据帧进行排序,然后使用group by对元素进行排序,方法如下:

df['date'] = pd.to_datetime(df['date'])
df = df.sort('date')
df = df.groupby(['unique_id']).agg(lambda x: set(tuple(x))).applymap(list).reset_index()
但是,分组时,数据的顺序不会保留。

这里是:

df_tmp = df.groupby('unique_id', as_index=False).agg(lambda x: sorted(set(x)))

这里是
pandas

df.groupby('unique_id',sort=False).agg(lambda x : x.unique().tolist())

您的
.agg中的
集合
没有保留顺序-如果需要删除重复项,您可以执行以下操作:

df2 = df.drop_duplicates(['unique_id', 'date']).sort_values('date').groupby('unique_id').agg(list)

我怀疑这将与在这里使用
集的OP有相同的问题。。。因为
Series.unique
表示:unique按外观顺序返回。基于哈希表的唯一性,因此不排序。-这和数据的顺序不一样-除非它已经按日期顺序。。。