Python - 读取csv中的列表

时间:2014-11-12 10:49:47

标签: python list csv pandas

我遇到问题,我无法读取包含浮动列表列的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

2 个答案:

答案 0 :(得分:1)

如果你需要知道的是如何从字符串到列表和字符串到数字,请参阅这篇文章How to turn a 'string list' into a real list?https://docs.python.org/3/library/functions.html#float上的Python文档

答案 1 :(得分:1)

我不知道CSV是否具有复杂对象(如列表)的概念。您可以使用",".join(your_list)将列表映射到字符串,前提是您只使用浮点数。

映射表示列表的存储字符串就像retrieved_string.split(',')一样简单。

你可能想要考虑一种支持JSON等列表的格式,在使用python时它也更友好(根据我的经验)。