Python Pandas将字符串转换为NaN

时间:2014-07-11 17:09:43

标签: python excel unicode pandas scipy

所以我使用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'?

1 个答案:

答案 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)