[英]nan to empty string python
我編寫了一個將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
您可以使用以下命令代替np.nan_to_num(x, 0)
:
row = ['' if np.isnan(x) else x for x in row]
如果您還想刪除零(如第二個示例所示),您可以簡單地擴展條件:
row = ['' if np.isnan(x) or x == 0 else x for x in row]
你問了兩個問題。
NaN
導出到 csv。 只需使用pandas
。 也在這里回答。row = [np.nan, '' , regex=True]
我不確定您要做什么,但您不能將regex=True
寫入list
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.