如何将pandas DataFrame指定单元格的多个值拆分为独立值列表?
pandas逗号分隔多值单元格拆分方案
问题根因
你的现有代码存在两处错误:
- 错误将
loc筛选返回的Series对象直接转为字符串,会引入索引、数据类型等无关内容 - 未对逗号分隔的字符串做拆分处理,调用字符串的
values属性实际返回的是单个字符组成的序列,拼接后就会得到无分隔符的连续数字
场景1:查询单个客户的过敏编码列表
如果确认每个customer_id仅对应一行数据,使用以下代码即可拿到拆分后的独立编码:
# 取对应客户的原始编码字符串 allergy_raw = df_sheet.loc[df_sheet["customer_id"] == customer, "allergies_code"].iloc[0] # 按逗号拆分,同时去除空格、转换为整数(不需要数值可去掉int()) customer_allergies = [int(code.strip()) for code in allergy_raw.split(',')]
处理后customer_allergies的输出为[113, 115, 121],符合预期。
场景2:全表批量拆分多值单元格
如果需要将整张表的多值单元格拆分、展开为单行单值的结构,可以使用pandas内置的explode方法:
# 先将每个单元格的字符串拆分为列表 df_sheet["allergies_code"] = df_sheet["allergies_code"].str.split(',') # 展开列表为多行,重置索引 df_exploded = df_sheet.explode("allergies_code", ignore_index=True) # 可选:将编码统一转换为整数类型 df_exploded["allergies_code"] = df_exploded["allergies_code"].astype(int)
内容的提问来源于stack exchange,提问作者נועה בינסקי
相关产品推荐
相关产品推荐

