python - 如何使用值列表中的列创建一个新的数据框(下面有更好的描述)?
问题描述
我有一个这样的数据框。在值列中,每行都有一个数字列表。在类别列中,每行都有一个类别列表。值的类型为 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 |
谢谢您的帮助。
解决方案
另一个选项explode
and 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
推荐阅读
- typescript - 从 API 响应中获取嵌套对象的值
- asp.net - 尚未引用此标签 停止发布的警告消息
- oracle - 如何检查条件并将文本写入文本文件 oracle 表单
- python - 为大量子文件夹合并子文件夹中的文件
- java - 将 JSON 文件中的数据插入 MySql 表
- mysql - 为多个产品/环境管理相同数据库表的更好方法是什么?
- flutter - 颤动的webview键盘无法显示
- windbg - 调试驱动程序验证程序报告的 NdisTimedDataHang
- java - 如何查找网页的所有元素(仅加载 25 个而不是全部)
- r - 如何使用指数作为乘数来设置模拟 VaR 的函数