JSON 数组到 pandas 中的一个热编码

JSON array to one hot encoding in pandas

假设我有一个 pandas 数据框,如下所示:

car              colors
corvette         {"colors": ["red", "black"]}
forester         {"colors": ["white", "silver", "black"]}

我想像这样对每辆车的颜色进行一次热编码:

car        black    red   white  silver  black
corvette       1      1       0       0      0
forester       1      0       1       1      0

有什么优雅的方法可以完成此任务?

IIUC:

(df.drop('colors', axis=1)
   .join(pd.get_dummies(pd.DataFrame.from_records(df.colors.values)
                  ['colors'].explode())
            .sum(level=0)
        )
)

输出:

        car  black  red  silver  white
0  corvette      1    1       0      0
1  forester      1    0       1      1