【发布时间】:2019-01-17 10:37:31
【问题描述】:
我有来自 CSV (gist with small sample) 的 pandas DataFrame:
| title | genres |
--------------------------------------------------------
| %title1% |[{id: 1, name: '...'}, {id: 2, name: '...'}]|
| %title2% |[{id: 2, name: '...'}, {id: 4, name: '...'}]|
...
| %title9% |[{id: 3, name: '...'}, {id: 9, name: '...'}]|
每个title 都可以与多种类型的计数相关联(大于或大于1)。
任务是将数组从genre 列转换为列,并为每种类型放置一个(或Trues):
| title | genre_1 | genre_2 | genre_3 | ... | genre_9 |
---------------------------------------------------------
| %title1% | 1 | 1 | 0 | ... | 0 |
| %title2% | 1 | 0 | 0 | ... | 0 |
...
| %title9% | 0 | 0 | 1 | ... | 1 |
流派是常量集(该集中大约有 20 个项目)。
天真的方法是:
- 创建所有类型的集合
- 为每个类型创建列,用 0 填充
- 对于每一行,在 DataFrame 中检查某些类型是否在
genres列中,并用 1 填充该类型的列。
这种方法看起来有点怪。
我认为 pandas 有更合适的方法。
【问题讨论】:
-
你最初是如何得到那个结构的?
-
@roganjosh 来自 CSV 文件
-
CSV 文件不能保存 python 列表和字典。该列是一个字符串,或者您将 CSV 解析为该结构
-
@roganjosh 在 CSV 中这个值只是字符串 gist.github.com/feeeper/9c7b1e8f8a4cc262f17675ef0f6e1124