pandas - 使用 python 列表作为 dtype
问题描述
我加载表单的 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 加载/保存/重新加载这些数据帧的阶段,这些列表是错误的来源。由于这个扩展http://pandas.pydata.org/pandas-docs/stable/generated/pandas.api.extensions.ExtensionArray.html#pandas.api.extensions.ExtensionArray我已经将我的熊猫版本升级到 0.23但我不知道该怎么做。这对我的用例有用吗?我可以从中获得灵感的任何例子吗?
解决方案
您可以使用 ast.literal_eval
https://docs.python.org/3/library/ast.html#ast.literal_eval
ast.literal_eval(node_or_string)
安全地评估包含 Python >literal 或容器显示的表达式节点或字符串。提供的字符串或节点只能由以下 Python 文字结构组成:字符串、字节、数字、元组、>列表、字典、集合、布尔值和无。
这可用于安全地评估包含来自不受信任来源的 Python 值的字符串,而无需自己解析这些值。它 > 无法评估任意复杂的表达式,例如 > 涉及运算符或索引。
推荐阅读
- java - 找不到符号:类 OneofDescriptor
- java - 杰克逊:SerializationConfig.hasExplicitTimeZone()
- javascript - jQuery删除文件后删除DropZone.js缩略图
- javascript - :无法在“窗口”上执行“获取”:无法从包含 Svelte 中的凭据的 URL 构造请求
- javascript - React-input-mask 无法粘贴正确的电话
- php - 执行错误挂载php 7 Debian 9
- ios - 更改图像视图后 UIImage 未更新
- javascript - Javascript将数组中的字符串拆分为数组中的对象
- ios - 如何使用目标 c/Swift 在本机 iOS 中禁用屏幕截图?
- node.js - 从nodejs中的回调函数返回值