如何从 Excel 中导入列表的数字列表作为实际的数值,而不是 Python 中的字符串?

How can I import numeric lists of lists from Excel as actual numeric values, not strings in Python?

提问人:heath1205 提问时间:5/30/2023 更新时间:5/30/2023 访问量:28

问:

我尝试使用在列的每个垂直单元格内组织为列表列表的数据,就像这样。此列中所有单元格的数据类型均为数值,每个子列表都有一个 int 和一个浮点数。

我正在使用 read_excel 导入数据,并希望能够通过索引访问子列表的元素,例如。

dataframe["ColumnName"][0][0][0] 

获取第一个列表中的第一项

但是,单元格的内容被读取为字符串(我也用 type() 检查了这一点)。因此,例如,当我尝试上面的索引时,我会得到“[”,字符串的第一个字符,而不是“2”。

我试过了:

  • 在列上使用 pd.to_numeric 时,我收到“无法解析字符串”错误
  • 当我尝试遍历字符串并将字符更改为 int() 时,我得到:以 10 为基数的 int() 无效文字
  • using - 它不能(也不能转换为 int)dtype = {"colname": float)
  • 转换为 numpy 数组,然后使用 I 得到“无法将字符串转换为浮点数”。arr.astype(float)

当我将数据作为一堆列表复制并粘贴到 python 文件中时,这很好,我可以通过索引访问元素,但显然我不想这样做。我想更好地理解为什么它将列表转换为字符串,非常感谢任何建议。

python list import 嵌套列表

评论

0赞 DeusDev 5/30/2023
您可以使用 eval 内置函数将字符串计算到 Python 列表中。另一种选择是ast.literal_eval

答:

1赞 user19077881 5/30/2023 #1

Excel 元素是“[[2, 2.3], [2, 3.4]]”行的字符串,因此不能直接读取为 Python 列表和子列表,可以从中提取和转换数值。您需要首先使用例如,将字符串更改为 true List:

from ast import literal_eval
ml = literal_eval(df['ColName'][0])

然后获取第一个 subList 的第一个值:

print(ml[0][0])

不需要进行类型转换,因为该值是 .int