首页 > 解决方案 > Pandas 2 列数据框分类行

问题描述

我有一个包含两列、值和类别的数据框。我需要将数据框转换为每个值有一行,该值相关类别为 1 或 0。

所以从这里:

+--------+--------------+
| value  |   category   |
+--------+--------------+ 
|   1    |      32      |
|   1    |      33      |
|   1    |      34      |
|   1    |      35      |
|   2    |      32      |
|  ...   |      ...     |
+--------+--------------+

对此:

+--------+----+----+----+----+
| value  | 32 | 33 | 34 | 35 |
+--------+----+----+----+----+
|   1    |  1 |  1 |  1 |  1 |
|   2    |  1 |  0 |  0 |  0 |
+--------+----+----+----+----+

我试图通过使用嵌套循环来解决这个问题,但它太慢了。有没有更好的办法?

标签: pandasnumpydataframe

解决方案


这应该可行,接受@ALollz建议并重置索引。

import pandas as pd
raw_data = {'value':      [1, 1, 1, 2, 2],
            'category':     [32, 33, 34, 35, 36]}

df = pd.DataFrame(raw_data)
df = pd.crosstab(df.value, df.category).clip(upper=1)
df.reset_index(drop=True)

推荐阅读