在 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 答案 https://stackoverflow.com/a/14635052/4909923,我应该尝试捕获空字符串的 SyntaxError 异常:
ast 使用compile 来编译源字符串(必须是
表达式)转换为 AST。如果源字符串不是有效的
表达式(如空字符串),将引发 SyntaxError
编译。
但是,我不确定如何在上下文中捕获单个单元格的异常read_csv
converters
.
解决这个问题的最佳方法是什么?是否有其他方法可以将空字符串/单元格转换为对象literal_eval
会接受还是忽略?
注意:我的理解是,在可读文件中包含文字元组并不总是最好的事情,但就我而言,它很有用。