【发布时间】:2017-12-22 05:31:37
【问题描述】:
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,index=False,mode='wb',sep=',',encoding='utf-8')
但是,我的结果 csv 文件包含 nan 用于 excel 文件中的所有空白单元格。
我错过了什么?我已经尝试过 .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,,测试
【问题讨论】:
-
“空白”是什么意思?
-
df.fillna没用? -
请提供一个可重现的例子。
-
空白是指 Excel 中的一个空单元格(读取时)被写入 'nan'(不带引号) df.fillna('', inplace=True) 不起作用。我将尝试制作一个可重现的示例。
-
@panda 所以它是一个
nan字符串?
标签: python excel csv pandas nan