我有一个数据框如下:
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
名称中的值按时间顺序排列,因为它们带有时间戳。有关于此的任何指示?
答案 0 :(得分:2)
我也可以自由地为你的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