python - 将组折叠为一行 Pandas 数据框

标签 python pandas

我有一个如下的数据框:

         id                     timestamp            name
         1                  2018-01-23 15:49:53     "aaa"
         1                  2018-01-23 15:54:56     "bbb"
         1                  2018-01-23 15:49:57     "bbb"
         1                  2018-01-23 15:49:54     "ccc"

这是我的数据中的一组 id 示例。我有几组ID。
我想要做的是将每个组折叠成一行,但根据时间戳按时间顺序排列,例如像这样
         id                       name   
          1                   aaa->ccc->bbb->bbb

name 中的值按时间顺序排列,因为它们与时间戳一起出现。关于这个的任何指示?

最佳答案

我也可以自由地向您的 df 添加一些数据:

print(df)

输出:
   id   timestamp   name
0   1   2018-01-23T15:49:53 aaa
1   1   2018-01-23T15:54:56 bbb
2   1   2018-01-23T15:49:57 bbb
3   1   2018-01-23T15:49:54 ccc
4   2   2018-01-23T15:49:54 ccc
5   2   2018-01-23T15:49:57 aaa

那么你需要:
df['timestamp'] = pd.to_datetime(df['timestamp'])
df = df.sort_values(['id', 'timestamp'])
grp = df.groupby('id')['name'].aggregate(lambda x: '->'.join(tuple(x))).reset_index()
print(grp)

输出:
    id  name
0   1   aaa->ccc->bbb->bbb
1   2   ccc->aaa

关于python - 将组折叠为一行 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50727667/

相关文章:

python - 如何使 jupyter pytherejs 绘图更大?

python - 使用装饰器为递归函数计时

python - 将数据框与具有索引重复项并排除一列的系列相乘

python - 在 tkinter Canvas 中显示图像

Python Pandas - 具有不同列的 Concat 数据框忽略列名

python - 多个 matplotlib pyplot 等高线图的颜色循环

python - 在 Azure ML Studio 中将 pandas 更新到版本 0.19

python - 如何在Python中解决这个 'transpose'?

python - 包含 NaN python 的数据集中的 argmin

python - 使用日期作为列值 reshape 数据