使用pandas.read_csv时如何通过dtype指定item_number列读取为列表
问题排查
- 语法错误
你给出的示例代码中dtype参数传入的字典使用了等号分隔键值,不符合Python字典的语法规范,即使后续逻辑正确,这段代码也会直接抛出语法错误,正确的键值分隔符应为冒号。 - 配置逻辑错误
即使将语法修正为dtype = {'item_number': list},该配置也无法生效:pd.read_csv的dtype参数仅支持传入numpy标准数据类型、pandas官方扩展数据类型(如pd.StringDtype()),list不属于合法的可识别类型,pandas会默认将该列回退为object类型存储,但不会自动把读取到的字符串值封装为列表结构。
实现方案
目前仅靠dtype参数无法直接实现将列值自动封装为单元素列表的需求,dtype仅用于指定列的存储数据类型,不支持自定义值转换逻辑,可选择以下两种方式实现需求:
- 方式一:先通过dtype指定为字符串类型,读取后二次转换
# 读取时指定为字符串类型 df = pd.read_csv(filepath, sep=',', dtype={'item_number': str}) # 转换为单元素列表 df['item_number'] = df['item_number'].apply(lambda x: [x])
- 方式二:使用converters参数在读取阶段完成转换
df = pd.read_csv(filepath, sep=',', converters={'item_number': lambda x: [x]})
内容的提问来源于stack exchange,提问作者Sh2021
相关产品推荐
相关产品推荐

