python - Python多索引合并值
问题描述
我的问题是我有一个包含 3 个键、标志、开始时间和 ID 的字典列表。我正在尝试实现一种方式,在列表中首先按标志排序,然后按开始时间和 ids 排序。我的示例列表:
[{'flag': '143', 'startTime': '2020/02/09/10', 'id': '143'},
{'flag': '118', 'startTime': '2020/02/08/09', 'id': '118'},
{'flag': '138', 'startTime': '2020/02/09/05', 'id': '138'},
{'flag': '144', 'startTime': '2020/02/09/11', 'id': '144'},
{'flag': '19', 'startTime': '2020/02/04/06', 'id': '19'}]
我尝试创建一个数据框,然后使用标志和开始时间设置索引
temp = df.set_index(['flag', 'startTime'])
我得到的样本温度是:
flag starttime id
0 2020/02/03/11 0
2020/02/03/11 0
1 2020/02/03/12 1
2020/02/03/12 1
3 2020/02/03/14 3
... ... ...
140 2020/02/09/07 140
141 2020/02/09/08 141
142 2020/02/09/09 142
143 2020/02/09/10 143
144 2020/02/09/11 144
我想要实现的是,对于标志 1 和开始时间 2020/02/03/03,可以说如果有 3 个 id 1、2、3,那么我的数据框应该类似于:
flag sttarttime id
1 2020/02/03/03 1,2,3
2 2020/02/04/02 9,8,5 etc...
有人可以帮我吗?非常感谢您对此的任何帮助。几周以来我一直为此发疯。提前致谢。
解决方案
你可以试试这个:
df.groupby(['flag','startTime'])['id'].apply(lambda x: ','.join(x)).reset_index()
或者如果你想要它作为列表:
df.groupby(['flag','startTime'])['id'].apply(list).reset_index()
推荐阅读
- authorize.net - 付款开始后是否有任何可能的方法来编辑 Authorize.Net 的订阅间隔?
- python - 在python中进行多处理之前限制cpu内核
- python - 如果我按 NULL 值过滤列,如何返回所有行,而不是什么都不返回
- node.js - 参数为空的 ExpressJS 路由器
- python - 如何在 Python 中从 LDAP 服务器获取用户名和电子邮件?
- amazon-sagemaker - 如何在 Mac 本地运行张量流模型
- css - 为什么 Bootstrap 中导航栏的背景颜色不会改变?
- python - 将单个颜色条添加到python中的多个子图
- python - 单击按钮时链接两个 GUI 的问题
- python - 材料树——查找后期项目(在 Pandas 数据框中)