如何拆分Pandas DataFrame中DevType列的多值并提取唯一值生成统计列表
问题解决方案
问题原因
你的原有代码存在两个问题:
- 分隔符使用错误:你的DevType列是用分号拼接多个类型,但是代码中调用
split()时传入的是逗号,,拆分规则和实际不符 - 拆分结果未正确存入列表:你打印了拆分后的结果,但仍然把未拆分的原字符串加入了
possiblewords,同时没有对拆分后的重复类型做去重处理
修正后代码
循环实现版本(对应你原有写法的修改)
possiblewords = set() # 用set结构自动去重 unqlist = list(df_new['DevType'].unique()) for word in unqlist: # 按分号拆分,遍历每个独立类型 for dev_type in word.split(';'): # strip()用于去除类型名称前后可能存在的多余空格 possiblewords.add(dev_type.strip()) # 如果需要列表格式可以直接转换 possiblewords = list(possiblewords)
Pandas向量化实现版本(更简洁高效)
不需要单独提取唯一值列表,直接对整列处理即可得到结果:
possiblewords = list( df_new['DevType'] .str.split(';', expand=True) # 按分号拆分,扩展为多列 .stack() # 把多列数据堆叠为单列 .str.strip() # 去除多余空格 .unique() # 去重得到所有独立开发类型 )
拓展:直接统计各类型总出现次数
如果你后续需要统计每个独立开发类型的总出现次数,可以不用先生成possiblewords,直接一步完成统计:
dev_type_total_count = df_new['DevType'].str.split(';').explode().str.strip().value_counts()
返回的结果就是每个独立开发类型对应的总出现次数的Series。
内容的提问来源于stack exchange,提问作者minato namikaze
相关产品推荐
相关产品推荐

