2017-07-17 86 views
1

Python版本写入时,当更换楠大熊猫0.20.2Python的熊猫read_excel D型细胞STR通过空白( '')读取或经由to_csv

你好,

我有一个相当简单的要求。 我想读一个excel文件,并写入一个特定的工作表到一个csv文件。 在编写csv文件时,应将源Excel文件中的空白值作为空白处理/写入。 但是,我的空白记录始终以输出文件的'nan'写入。 (不带引号)

我读的Excel通过方法文件

read_excel(XLSX,SHEETNAME = '工作表Sheet1',D类= STR)

我指定D型,因为我有一些列的是是数字,但应视为字符串。 (否则它们可能会丢失前导0等) 即我想读取每个单元格的确切值。

现在我写经由 to_csv输出.csv文件(OUTPUT_FILE,索引=假,模式= 'WB',九月=”, '编码=' UTF-8' )

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

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

感谢您的帮助!

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

请在下面找到一个可重复的示例代码。 请首先创建一个新的Excel 2列有以下内容的文件: COLUMNA COLUMNB COLUMNC 01测试 02测试
03测试

(我保存这个Excel文件到c:\测试。XLS 请注意,列B中第1和第3行以及第2行中的列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,男,测试
02,测试,南
03,男,测试

我期望的结果将是:
COLUMNA,COLUMNB,COLUMNC
01,测试
02,测试,
03,测试

+0

你是什么意思的“空白”? –

+0

'df.fillna'没有工作? –

+0

请提供一个可重现的例子。 –

回答

1

既然你正在处理nan字符串,你可以在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'字符串值wi将被替换为空字符串''

+0

非常感谢,这个作品! 你能解释为什么fillna()不起作用吗? – panda

+0

@panda'df.fillna'显式查找'np.nan'(它是一个带有特殊位表示的浮点数),而''nan''只是一个字符串。此外,你可以考虑标记这个答案,如果它有帮助。谢谢! –

+0

谢谢。 read_excel会用'nan'字符串替代空白/空单元而不是将它们留空,是否有任何特定的原因/附加值? – panda