所以我使用pandas读取excel文件和csv文件。这些文件包含字符串和数字,而不仅仅是数字。问题是我的所有字符串都被转换为NaN,我完全不想要。我不知道列的类型会提前是什么(实际上我的工作就是处理系统,这样我就不能告诉大熊猫它们将会是什么(必须在以后发生)。我现在只想在每个单元格中读取一个字符串。
这是我的代码
if csv: #check weather to read in excell file or csv
frame = pandas.read_csv(io.StringIO(data))
else:
frame = pandas.read_excel(io.StringIO(data))
tbl = []
print frame.dtypes
for (i, col) in enumerate(frame):
tmp = [col]
for (j, value) in enumerate(frame[col]):
tmp.append(unicode(value))
tbl.append(tmp)
我只需要能够生成列式2D列表,我可以从那里做任何事情。我还需要能够处理Unicode(数据已经是Unicode)。
我如何构建' tbl'所以应该是字符串的单元格不会出现为“NaN'?
”答案 0 :(得分:1)
在一般情况下,您无法提前知道CSV的dtypes或列名称,使用CSV嗅探器会很有帮助。
import csv
[...]
dialect = csv.Sniffer().sniff(f.read(1024))
f.seek(0)
frame = pandas.read_csv(io.StringIO(data), dialect=dialect)