【发布时间】:2021-06-16 07:47:55
【问题描述】:
我有一个 Pandas DataFrame 如下:
+----------+---------------+-----------+---------------+
| List No. | List Item No. | Item Name | Issues |
+----------+---------------+-----------+---------------+
| 1 | 1 | A | foo, bar, baz |
| 1 | 2 | B | foo, bar |
| 2 | 3A | A | bar, quz |
| 2 | 3B | C | baz, foo, quz |
+----------+---------------+-----------+---------------+
以上可以使用以下代码生成
data = {'List No.':['1', '1', '2', '2'],
'List Item No.':['1', '2', '3A', '3B'],
'Item Name':['A', 'B', 'A', 'C'],
'Issues':['foo, bar, baz','foo, bar', 'bar, quz', 'baz, foo, quz']}
df = pd.DataFrame(data)
我想根据Issues 中存在的值的数量创建行。例如有 3 个逗号分隔值,所以我想创建 3 行。每个值 1。这可以使用[item for sublist in df.Issues.str.split(',').tolist() for item in sublist] 来完成。但是,我也想创建我无法做到的问题编号。
预期输出
+----------+---------------+-----------+-----------+-------+
| List No. | List Item No. | Item Name | Issue No. | Issue |
+----------+---------------+-----------+-----------+-------+
| 1 | 1 | A | 1 | foo |
| 1 | 1 | A | 2 | bar |
| 1 | 1 | A | 3 | baz |
| 1 | 2 | B | 1 | foo |
| 1 | 2 | B | 2 | bar |
| 2 | 3A | A | 1 | bar |
| 2 | 3A | A | 2 | quz |
| 2 | 3B | C | 1 | baz |
| 2 | 3B | C | 2 | foo |
| 2 | 3B | C | 3 | quz |
+----------+---------------+-----------+-----------+-------+
【问题讨论】:
标签: python pandas group-by split pandas-melt