python - 如何使用数据框列中的唯一值创建列表列表?
问题描述
我有一个如下的数据框,其中一张票有多个与之关联的项目。
| ticket_no | items |
|-----------|-------|
| 1 | Item1 |
| 1 | Item2 |
| 2 | Item3 |
| 2 | Item4 |
| 3 | Item5 |
| 3 | Item6 |
| 3 | Item7 |
| 3 | Item8 |
需要输出如下。
[[Item1, Item2],[Item3, Item4], [Item5, Item6, Item7, Item8]]
我试过下面的代码。它可以工作,但速度非常慢。
data = pd.read_csv('data.csv')
item_list = []
for ticket_no in data['ticket_no'].unique():
temp_data = list(data[data['ticket_no'] == ticket_no]['items'])
if len(temp_data) == 1:
pass
else:
item_list.append(temp_data)
有没有更快的方法来做到这一点?
解决方案
DataFrame.groupby
与list
to一起使用Series
,然后将其转换为list
s - 输出是嵌套列表:
item_list = data.groupby('ticket_no')['items'].apply(list).tolist()
print (item_list)
[['Item1', 'Item2'], ['Item3', 'Item4'], ['Item5', 'Item6', 'Item7', 'Item8']]
推荐阅读
- post - 渡槽飞镖中的发布请求产生 415 媒体类型不受支持
- swift - HomeKit – 将流视频从相机录制到 iPad
- xlsm - 使用exceljs包npm读写xlsm文件
- jwt - 使用本机应用类型登录 AAD 时,Azure AD JWT 缺少“组”节点
- javascript - 如何使用 Tableau Javascript API 获取除活动对象之外的 Tableau Dashboard 对象?
- javascript - 条形图无法读取laravel中的数据和标签
- excel - 使用动态 .ListFillRange 填充 ComboBox
- java - Junit for java Clock 没有任何额外的类或构造函数或注入
- laravel - Laravel 单元测试调用调用该数据库的方法
- vue.js - Axios 进行属性更改