将Pandas中逗号分隔的StuType列拆分为13个0/1二进制列
解决方案
先搞定Excel里的格式问题,再用Pandas生成目标列:
1. 修复Excel格式异常
先手动或用工具清理StuType列的排版问题:
- 把数值前后的空格、全角逗号、换行符这类异常字符清掉,确保分隔符都是半角逗号
- 确认ResponseID 8538、8562这类空值行的
StuType列确实是空白,没有隐藏的特殊字符
2. Pandas代码实现
用@ouroboros1的方案适配你的场景,代码如下:
import pandas as pd # 读取修复后的Excel文件 df = pd.read_excel("你的文件路径.xlsx") # 处理空值和拆分列:把逗号分隔的字符串转成整数列表,空值转空列表 df['StuType'] = df['StuType'].fillna('').apply( lambda x: list(map(int, x.split(','))) if x.strip() else [] ) # 生成13个0/1标记列 for num in range(1, 14): df[f'StuType_{num}'] = df['StuType'].apply(lambda lst: 1 if num in lst else 0) # 可选:删除临时处理的StuType列(如果不需要保留) # df.drop('StuType', axis=1, inplace=True)
补充说明
之前其他方案失效,大概率是Excel里的格式脏数据导致的——比如带空格的数值、非标准分隔符,会让拆分后的列表包含无效值,判断逻辑出错。先把格式修干净,这个方案就能正常跑。
内容的提问来源于stack exchange,提问作者Sarthak Girdhar
相关产品推荐
相关产品推荐

