Pandas 使用python列表作为数据类型

Pandas 使用python列表作为数据类型,pandas,Pandas,我加载表单的csv文件 fieldA|fieldB|fieldC| X| Y| 3,4,5| 我希望pandas将3,4,5作为python列表加载,又名pandas.read_csv…,dtypes={fieldC:list} 现在在调用read_csv时,我通过以下转换器 def _convert_to_list(x, field="pass a field to debug"): return list(map(int, x.split(','))) if (

我加载表单的csv文件

fieldA|fieldB|fieldC| 
     X|     Y| 3,4,5|
我希望pandas将3,4,5作为python列表加载,又名pandas.read_csv…,dtypes={fieldC:list}

现在在调用read_csv时,我通过以下转换器

def _convert_to_list(x, field="pass a field to debug"):
    return list(map(int, x.split(','))) if (x is not None and x != '') else np.nan

但我正处于从csv加载/保存/重新加载这些数据帧的阶段,这些列表是bug的来源。由于这个扩展,我已经将我的pandas版本升级到了0.23,但我不知道该怎么做。这对我的用例有用吗?任何我可以从中获得灵感的例子?

您可以使用ast.literal\u eval

ast.literal\u evalnode\u或字符串

安全地计算表达式节点或包含Python>文本或容器显示的字符串。提供的字符串或节点只能由>以下Python文本结构组成:字符串、字节、数字、元组、>列表、dicts、set、boolean和None

这可以用于安全地评估来自不受信任源的包含Python值>的字符串,而无需自己解析值。它不能计算任意复杂的表达式,例如涉及运算符或索引的表达式

我不认为ExtensionArray工具在数据帧的输入/输出方面会对您有所帮助,该数据帧包含的列包含list类型的对象。ExtensionArray设计中没有任何东西可以帮助解决输入/输出问题


您可以在decimal子目录中找到ExtensionArray的示例,在pandas/tests/extension/目录中找到json。这些示例都与输入/输出无关。

为了处理各种情况,我最终使用了def _load_listx,field=set field To debug:logger.logmp.TRACE,load field%s list%r%field,如果x为None,则x为None;如果x为None,则lenx==0:如果x[0],则返回np.nan!=[:x=[+x+]res=ast.literal\u evalx返回res