首页 > 解决方案 > 如何使用值列表中的列创建一个新的数据框(下面有更好的描述)?

问题描述

我有一个这样的数据框。在值列中,每行都有一个数字列表。在类别列中,每行都有一个类别列表。值的类型为 int,类别为字符串类型。值列中的每个值始终适合类别列中列表中相同位置的类别值。您可以将其视为食谱。例如:对于第一行的配方,您需要 2 个 a、4 个 c、3 个 d 和 5 个 e。

|   values  |     categories    | 
|   ------  |     ----------    |
| [2,4,3,5] | ['a','c','d','e'] |
|  [1,6,7]  |   ['b','c','e']   |
|   [3,5]   |    ['c','f']      |

我需要使用 pandas/python 创建一个新的数据框,以便它将不同的类别作为列并用相应的值填充行。所以它看起来像这样:

| a | b | c | d | e | f |
| - | - | - | - | - | - |
| 2 | 0 | 4 | 3 | 5 | 0 |
| 0 | 1 | 6 | 0 | 7 | 0 |
| 0 | 0 | 3 | 0 | 0 | 5 |

谢谢您的帮助。

标签: pythonpandas

解决方案


另一个选项explodeand pivot

df.apply(pd.Series.explode).pivot(columns='categories').fillna(0)

输出:

           values               
categories      a  b  c  d  e  f
0               2  0  4  3  5  0
1               0  1  6  0  7  0
2               0  0  3  0  0  5

推荐阅读