pandas - 熊猫:将数组列分解为一系列二进制列?
问题描述
给定这样的数据:
df = pd.DataFrame([
{ 'vals': ['foo', 'bar'], 'id': 100 },
{ 'vals': ['foo', 'bar', 'baz'], 'id': 101 },
{ 'vals': ['bar'], 'id': 102 },
{ 'vals': ['foo'], 'id': 103 }
])
有什么办法可以将其制成如下结构的数据框:
id foo bar baz
100 true true false
101 true true true
102 false true false
103 true false false
解决方案
使用MultiLabelBinarizer并强制转换为布尔值和join
所有列而不vals
提取pop
:
from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer()
df =df.join(pd.DataFrame(mlb.fit_transform(df.pop('vals')),columns=mlb.classes_).astype(bool))
print (df)
id bar baz foo
0 100 True False True
1 101 True True True
2 102 True False False
3 103 False False True
推荐阅读
- javascript - 如何在vue中根据v-if更改href名称
- autodesk-forge - 使用 Data Connector API 时,等待创建作业的时间很长
- flutter - 更改 Flutter 自定义滑块
- flutter - 如何使用搜索栏搜索我在 ListView 中制作的按钮?
- javascript - 当没有方法的返回值时,为什么 javaScript 的可选链接语法不适用于 Nullish Coalescing Operator?
- ruby - 重构 CHEF 食谱
- delphi - Delphi中交换字节顺序
- regex - 用正则表达式替换字符串末尾的 %?
- ios - iOS 15 中 UITableViewSection 之间的额外空间
- android - Google Play 应用签名已签名 apk