【发布时间】:2015-01-09 04:41:19
【问题描述】:
我有一个问题,我无法读取包含由浮动列表组成的列的 CSV 文件。 这是我用来保存 CSV 的方法。 data 是一个元组列表。
df = pandas.DataFrame(data, columns=['ColA', 'ColB'])
df.to_csv(FILE, index=False, header=True)
这样我在输出中得到以下文件,这很好。
ColA,ColB
"[1.5,2.5,3.5]",9
"[4.5,5.5,6.5]",9
"[3.5,1.5,8.5]",9
现在,当我尝试以这种方式加载文件时
df = pandas.read_csv(FILE)
mylist = []
for x in xrange(len(df['ColA'])):
mylist.append(df['ColA'][x])
我得到的是字符串列表而不是列表列表。我做错了什么?
编辑: 我不认为逗号是一个问题。看看这段代码。
import pandas
FILE = 'file.csv'
listA = [[1.1, 1.2, 1.3], [2.1, 2.2, 2.3], [3.1, 3.2, 3.3]]
listB = [9.1, 9.2, 9.3]
data = map(lambda x, y: (x, y), listA, listB)
df = pandas.DataFrame(data, columns=['ColA', 'ColB'])
df.to_csv(FILE, index=False, header=True)
df = pandas.read_csv(FILE)
print df['ColA'][0], df['ColA'][0][0]
输出是[1.1, 1.2, 1.3] [ 而不是1.1
【问题讨论】:
-
您保存了一个字符串“[1.5,2.5,3.5]”。所以你得到一个字符串:)。您可以使用 eval(""[1.5,2.5,3.5]""),但我听说这是不好的做法。
-
我猜这是错误,但我传递的是一个列表而不是字符串。我应该以某种方式指定类型吗?
-
我不确定 csv 是否有一个映射到 python 列表的列表概念。您可以使用
",".join(your_list)将列表写为字符串(真正的字符串,而不是str(list)的形式)并使用retrieved_string.split(',')将其取回,但您可能永远不会在其中包含任何包含逗号的内容该列表,因为它会破坏映射。如果没问题 - 这是一个很好的解决方案。你有考虑过使用我们的救世主 JSON 吗? -
是的,这可能是一个解决方案,因为它是一个浮点数列表。谢谢。