如何将含键与值列表的字典转为独热编码Pandas DataFrame
实现方法
直接用pandas内置方法就能搞定,不用写多重循环,两种简便方案:
方案一:Series展开 + 交叉表
import pandas as pd d = {'paris':['a','b'],'brussels':['b','c'],'mallorca':['a','d']} # 转成Series,索引为城市 s = pd.Series(d) # 展开每个城市对应的字母列表 s_exploded = s.explode() # 生成交叉表,自动完成独热编码,空值补0转整数 result = pd.crosstab(s_exploded.index, s_exploded).fillna(0).astype(int)
执行后result就是预期结果:
| a | b | c | d | |
|---|---|---|---|---|
| brussels | 0 | 1 | 1 | 0 |
| mallorca | 1 | 0 | 0 | 1 |
| paris | 1 | 1 | 0 | 0 |
方案二:stack展开 + 独热编码求和
import pandas as pd d = {'paris':['a','b'],'brussels':['b','c'],'mallorca':['a','d']} # 从字典构建DataFrame,索引为城市 df = pd.DataFrame.from_dict(d, orient='index') # 展开所有字母,生成独热编码后按城市索引求和 result = df.stack().str.get_dummies().sum(level=0)
这个方案更简洁,一步完成展开和编码求和,结果和方案一完全一致。
内容的提问来源于stack exchange,提问作者JFerro
相关产品推荐
相关产品推荐

