我加载格式为
的csv文件fieldA|fieldB|fieldC|
X| Y| 3,4,5|
我希望熊猫将“ 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的来源。由于此扩展名http://pandas.pydata.org/pandas-docs/stable/generated/pandas.api.extensions.ExtensionArray.html#pandas.api.extensions.ExtensionArray,我已将熊猫版本升级到0.23,但我不知道该怎么做。这对我的用例有用吗?我能从中得到什么启发吗?
答案 0 :(得分:1)
您可以使用ast.literal_eval
https://docs.python.org/3/library/ast.html#ast.literal_eval
ast.literal_eval(node_or_string)
安全地评估包含Python>文字或容器显示的表达式节点或字符串。提供的字符串或节点只能由以下Python文字结构组成:字符串,字节,数字,元组,列表,字典,集合,布尔值和无。
这可用于从不受信任的来源安全地评估包含Python值的字符串,而无需自己解析值。它>不能评估任意复杂的表达式,例如>涉及运算符或索引。
答案 1 :(得分:0)
我认为ExtensionArray
工具不会为您提供DataFrame
的输入/输出,其中list
包含的列包含ExtensionArray
类型的对象。 ExtensionArray
设计中没有任何东西可以解决输入/输出问题。
您可以在目录decimal
的子目录json
和pandas/tests/extension/
中找到let result = paramsid.filter(obj => {
return obj.dt_txt.includes("2018-06-28");
});
的示例。这些示例都没有对输入/输出做任何事情。