Python Pandas将string转换为NaN

所以我用大pandas来阅读excel文件和csv文件。 这些文件包含string和数字不只是数字。 问题是我所有的string都被转换成了我不想要的NaN。 我不知道列的types是什么时候会提前(实际上我的工作是处理这个系统),所以我不能告诉大pandas他们将会是什么样的(后来肯定会来的)。 我只想在每个单元格中读取一个string。

这是我的代码

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) 

我只需要能够生成列明智的二维列表,我可以做任何事情从那里。 我也需要能够处理Unicode(数据已经在Unicode)。

我如何构build'tbl',使得应该是string的单元格不会以“NaN”出现?

在一般情况下,您无法提前知道CSV的dtype或列名称,使用CSV嗅探器可能会有帮助。

 import csv [...] dialect = csv.Sniffer().sniff(f.read(1024)) f.seek(0) frame = pandas.read_csv(io.StringIO(data), dialect=dialect)