Я пытаюсь записать DataFrame в файл Excel, используя xlsxwriter, и у меня возникают проблемы с заполнением значений NaN.

Независимо от того, что я использую: df.fillna, df.replace или параметр na_rep на записывающем устройстве, в нескольких столбцах сохраняются любые значения NaN в DataFrame.

Исследуя с помощью pdb.set_trace(), я обнаружил следующее:

(Pdb) df['col_name'][0]
Decimal('NaN')
(Pdb) Decimal(np.nan)
Decimal('NaN')
(Pdb) df['col_name'][0]==Decimal(np.nan)
False
(Pdb) na=df['col_name'][0]
(Pdb) na
Decimal('NaN')
(Pdb) na==df['col_name'][0]
False
(Pdb) df['col_name'][0]
Decimal('NaN')

Как я могу определить эти значения, чтобы заменить их, если я не могу их определить?

1
mazjin 13 Мар 2018 в 14:47

2 ответа

Лучший ответ

Если формат Decimal для вас не важен, вы можете преобразовать его в float.

Если для вас важен Decimal формат , то pandas не является идеальным выбором, так как он не может векторизироваться, как numpy массивы.

import pandas as pd, numpy as np
from decimal import Decimal

s = pd.Series([Decimal(np.nan), Decimal(5.1)])

test = s.isnull().tolist()  # [False, False]

s = s.astype(float)

test = s.isnull().tolist()  # [True, False]
2
jpp 13 Мар 2018 в 11:57

Вы не можете использовать {{X0 }}, чтобы проверить наличие NaN. Вам следует использовать np.isnan().

1
SergiyKolesnikov 13 Мар 2018 в 12:04