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,测试
答案 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('')