【发布时间】:2019-04-05 18:03:07
【问题描述】:
在 Pandas DataFrame 中,我正在读取一个 csv 文件,如下所示:
A B +--------------+---------------+ 0 | | ("t1", "t2") | +--------------+---------------+ 1 | ("t3", "t4") | | +--------------+---------------+
其中两个单元格中有字面元组,其中两个单元格是空的。
df = pd.read_csv(my_file.csv, dtype=str, delimiter=',',
converters={'A': ast.literal_eval, 'B': ast.literal_eval})
转换器ast.literal_eval 可以很好地将文字元组转换为代码中的 Python 元组对象——但前提是没有空单元格。因为我有空单元格,所以我收到错误:
SyntaxError: 解析时出现意外的 EOF
根据这个S/O answer,我应该尝试捕获空字符串的SyntaxError异常:
ast 使用 compile 来编译源字符串(必须是 表达式)转换为 AST。如果源字符串无效 表达式(像一个空字符串),一个 SyntaxError 将由 编译。
但是,我不确定如何在 read_csv converters 的上下文中捕获单个单元格的异常。
解决此问题的最佳方法是什么?是否有其他方法可以将空字符串/单元格转换为 literal_eval 可以接受或忽略的对象?
注意:我的理解是,在可读文件中包含文字元组并不总是最好的,但在我的情况下它很有用。
【问题讨论】:
标签: python string pandas csv tuples