假设有一个 DataFrame,如下所示
import pandas as pd
import numpy as np
df = pd.DataFrame({'id':range(1,4),
'items':[['A', 'B'], ['A', 'B', 'C'], ['A', 'C']]})
df
id items
1 [A, B]
2 [A, B, C]
3 [A, C]
是否有一种有效的方法将上述 DataFrame 转换为以下(one-hot 编码列)?非常感谢!
id items A B C
1 [A, B] 1 1 0
2 [A, B, C] 1 1 1
3 [A, C] 1 0 1
一个可能的解决方案:
df.explode('items').pivot_table(index='id', columns='items', values='id', aggfunc=len, fill_value=0)
输出:
items A B C
id
1 1 1 0
2 1 1 1
3 1 0 1