【发布时间】:2021-01-01 09:32:09
【问题描述】:
我已经编写了一个将 excel 数据写入 csv 的小型 python 程序,我有一些空单元格在 cvs 中转换为 nan。
我已经能够将 nan 转换为零,但我的要求是为 nan 处理空字符串而不是零。
我尝试使用“替换”,但它不起作用。
这是我写数据的代码
# Open th workbook
data = pd.read_excel(excelName, sheet_name, header=None).values
tables = dict()
for header, start_row, end_row in eval(config['headers']):
table = data[start_row-1:end_row, 1:7]
tables[header] = table
with open(join(CurrentDirectory, inputFile), 'w') as file:
for header in tables:
for row in tables[header]:
row = [date, header] + row.tolist()
row = [np.nan_to_num(x, 0) for x in row]
file.write(",".join([str(x) for x in row]))
file.write("\n")
所以而不是
with open(join(CurrentDirectory, inputFile), 'w') as file:
for header in tables:
for row in tables[header]:
row = [date, header] + row.tolist()
#row = [np.nan_to_num(x, 0) for x in row]
row = [np.nan, '' , regex=True]
file.write(",".join([str(x) for x in row]))
file.write("\n")
但是我遇到了一个错误,有人可以帮我解决我做错了什么吗?
ERROR: invalid syntax
这是我当前的 csv 的样子:
A, 2.4, 3212, 0, 343.2234,90
B, 1.4, 0 , 0 , 2839.09, 100
这就是我想要的样子
A,2.4,3212,,343.2234,90
B,1.4,,,2839.09,100
【问题讨论】:
-
I am getting an error请将错误粘贴到您的问题中 -
df['colname'].fillna('')? -
['' if np.isnan(x) else x for x in row] -
注意,你应该使用
pandas.DataFrame.to_csv -
为什么不用
pandas函数,比如pd.read_excel()和df.to_csv()?这样就可以使用 DataFrame / Series 函数,例如.isnull和.replace(np.nan, '')。