我有一个如下的数据框:
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/