簡體   English   中英

nan 到空字符串 python

[英]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]

np.isnan

你問了兩個問題。

  1. 評論中回答了如何使用空字符串而不是NaN導出到 csv。 只需使用pandas 也在這里回答。
  2. 您的無效語法錯誤來自這一行
row = [np.nan, '' , regex=True]

我不確定您要做什么,但您不能將regex=True寫入list

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM