如何使用数据框列中的唯一值创建列表列表?

时间:2019-12-03 07:03:59

标签: python pandas

我有一个如下所示的数据框,其中一张票证具有与其关联的多个项目。

| 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)

有更快的方法吗?

1 个答案:

答案 0 :(得分:4)

DataFrame.groupbylist一起使用到Series,然后将其转换为list s-输出是嵌套列表:

item_list = data.groupby('ticket_no')['items'].apply(list).tolist()
print (item_list)
[['Item1', 'Item2'], ['Item3', 'Item4'], ['Item5', 'Item6', 'Item7', 'Item8']]
相关问题