Python如何为DataFrame列唯一值生成列表存入字典后转换为DataFrame
实现方案
方法1:使用defaultdict实现(匹配你的逻辑需求)
from collections import defaultdict import pandas as pd # 你已有的初始变量 OS_name = df['OS_name'].tolist() OS_values = df.OS_name.unique().tolist() # 初始化key为OS唯一值、value为对应0/1列表的字典 os_map = defaultdict(list) for unique_os in OS_values: # 生成当前OS对应的0/1列表 os_map[unique_os] = [1 if current_os == unique_os else 0 for current_os in OS_name] # 将字典转换为DataFrame result_df = pd.DataFrame(os_map)
注意:你提供的示例代码中循环范围为
range(0,len(OS_name)-1)会丢失列表最后一个元素,上述实现默认保留全部元素,如果你确实需要去掉最后一个元素,将列表推导式中的OS_name替换为OS_name[:-1]即可。
方法2:pandas原生极简实现
不需要额外转换列表、调用defaultdict,直接用pandas内置的独热编码接口即可得到完全一致的结果,性能更优:
result_df = pd.get_dummies(df['OS_name'], dtype=int)
内容的提问来源于stack exchange,提问作者ianux22
相关产品推荐
相关产品推荐

