簡體   English   中英

在python中使用Pandas ExcelWriter時處理Nan

[英]Handle Nan when using Pandas ExcelWriter in python

我如何更改以下代碼以將NaN值作為我的數據框中的空單元格來處理,因為我逐行迭代輸出A列中的值?

excel = pd.ExcelWriter(f_name,engine='xlsxwriter')
wb = excel.book
ws = wb.add_worksheet('PnL')

for i in len(df):
  ws.write(0,i,df.iloc[i]['A'])

我想你可以使用fillna

df = df.fillna(0)

要么:

df['A'] = df['A'].fillna(0)

但更好的是使用to_excel

import pandas as pd
import numpy as np

# Create a Pandas dataframe from the data.
df = pd.DataFrame({'A': [10, 20, 30, 20, 15, 30, 45, np.nan], 
                   'B': [10, 20, 30, 20, 15, 30, 45, np.nan]})
print df
    A   B
0  10  10
1  20  20
2  30  30
3  20  20
4  15  15
5  30  30
6  45  45
7 NaN NaN

#create subset, because cannot write Series to excel
df1 = df[['A']]

# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter('f_name.xlsx', engine='xlsxwriter')

# Convert the dataframe to an XlsxWriter Excel object, instead NaN give 0
df1.to_excel(writer, sheet_name='PnL', na_rep=0)

如果要省略索引和標題,請添加參數index=Falseheader=False

df1.to_excel(writer, sheet_name='PnL', na_rep=0, index=False, header=False)

高強

我建議復制數據幀,將NAN更改為空格然后寫入數據。 您的原始數據幀仍將具有NAN。

此外,作為一種解決方法,Xlsxwriter支持編寫映射到產生錯誤代碼的公式的寫入NAN。 但是,這是構造函數選項,默認情況下不啟用。 查看文檔

如果您有一個Pandas版本> = 0.16,您應該可以打開該選項,如下所示:

excel = pd.ExcelWriter(f_name,
                        engine='xlsxwriter',
                        options={'nan_inf_to_errors': True})

暫無
暫無

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

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