首页 > 解决方案 > 在熊猫中将行组合成按日期排序的列表

问题描述

我有一个熊猫数据框,它有几个唯一的 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()

但是,在分组时,不会保留数据的顺序。

标签: pythonpandasdataframe

解决方案


给你:

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

推荐阅读