我有一个包含两个列,值和类别的数据框。我需要将数据框转换为每个值一行,对于与值相关的类别,该值应为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 |
+--------+----+----+----+----+
我试图通过使用嵌套循环来解决这个问题,但是它太慢了。有更好的方法吗?
答案 0 :(得分:0)
这应该可行,接受@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)