Python Pandas read_excel dtype str在读取或通过to_csv

时间:2017-07-17 15:38:55

标签: python excel csv pandas nan

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

您好,

我有一个非常简单的要求。 我想阅读一个excel文件并将特定的表格写入csv文件。 编写csv文件时,源Excel文件中的空白值应被视为空白。 但是,我的空白记录总是写成' nan'到输出文件。 (没有引号)

我通过方法

读取Excel文件

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

我正在指定dtype,因为我有一些数字列,但应该被视为字符串。 (否则他们可能会失去领先的0等) 即我想从每个细胞中读取确切的值。

现在我通过输出.csv文件 的 to_csv(OUTPUT_FILE,索引=假,模式=' WB' 09月=',',编码=' UTF-8&#39)

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

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

感谢您的帮助!

附录:请在下文中找到可重现的例子。

请在下文中找到可重现的示例代码。 请先创建一个包含2列的新Excel文件,其中包含以下内容: COLUMNA COLUMNB COLUMNC 01测试 02测试
03测试

(我将此Excel文件保存到c:\ test.xls 请注意,B列的第1行和第3行以及C列的第2行是空白/空白

现在这是我的代码:

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,楠,测试
 02,测试,楠
 03,南,测试

我想要的结果是:
COLUMNA,COLUMNB,COLUMNC
01,测试
02,测试,
03,测试

1 个答案:

答案 0 :(得分:5)

由于您正在处理nan字符串,因此可以使用replace函数:

df = pd.DataFrame({'Col1' : ['nan', 'foo', 'bar', 'baz', 'nan', 'test']})
df.replace('nan', '')

   Col1
0      
1   foo
2   bar
3   baz
4      
5  test

所有'nan'字符串值都将替换为空字符串''replace不在原地,因此请务必将其分配回来:

df = df.replace('nan', '')

然后,您可以使用to_csv将其写入您的文件。

如果您实际上想要用空白填充NaN值,请使用fillna

df = df.fillna('')    
相关问题