Pythonpandasread_excel dtype str在读取或通过to_csv写入时,用空白('')replacenan

Python版本:Python 2.7.13 :: Anaconda自定义(64位)pandas版本:pandas 0.20.2

你好,

我有一个相当简单的要求。 我想阅读一个Excel文件,并写入一个特定的工作表到CSV文件。 在编写csv文件时,应将源Excel文件中的空白值作为空白处理/写入。 但是,我的空白logging总是写入输出文件的“南”。 (没有引号)

我通过方法读取Excel文件

read_excel(xlsx,sheetname ='sheet1',dtype = str)

我指定dtype,因为我有一些列是数字,但应被视为string。 (否则,他们可能会失去前导0等),即我想读取每个细胞的确切值。

现在我通过to_csv(output_file,index = False,mode ='wb',sep =',',encoding ='utf-8')输出.csv文件。

但是,我的结果csv文件包含来自excel文件的所有空白单元格的nan。

我错过了什么? 我已经尝试过.fillna('',inplace = True)函数,但似乎没有对我的数据做任何事情。 我也尝试将参数na_rep =''添加到to_csv方法,但没有成功。

谢谢你的帮助!

附录:请在下面find一个可重复的例子。

请在下面find一个可重复的示例代码。 请首先用2列创build一个新的Excel文件,内容如下:COLUMNA COLUMNB COLUMNC 01testing02testing
03testing

(我将这个Excel文件保存到c:\ test.xls请注意,列B的第一行和第三行以及列C的第二行是空的/空的)

现在这是我的代码:

import pandas as pd xlsx = pd.ExcelFile('c:\\test.xlsx') df = pd.read_excel(xlsx, sheetname='Sheet1', dtype = str) df.fillna('', inplace=True) df.to_csv('c:\\test.csv', index=False,mode='wb',sep=',',encoding='utf-8', na_rep ='') 

我的结果是:
COLUMNA,COLUMNB,COLUMNC
01,楠,testing
02,testing,楠
03,男,testing

我希望的结果是:
COLUMNA,COLUMNB,COLUMNC
01,testing
02,testing,
03,testing

既然你正在处理nanstring,你可以使用df.replace函数:

 In [625]: df = pd.DataFrame({'Col1' : ['nan', 'foo', 'bar', 'baz', 'nan', 'test']}) In [626]: df.replace('nan', '') Out[626]: Col1 0 1 foo 2 bar 3 baz 4 5 test 

你可以把它写到你的文件中:

 df.to_csv(output_file, index=False, mode='wb', sep=',', encoding='utf-8') 

所有'nan'string值将被replace为空string''