Есть ли возможность сделать поле пустым при вставке строки, когда поле равно NaN?

#python #numpy #for-loop #nan

#python #numpy #for-цикл #nan

Вопрос:

У меня есть следующий массив:

 a = np.array([np.nan, str(606194584), str(20203229)])
a
>>array([nan,  606194584,  202032291.])

for rows in a:
    if i == np.NaN:
        print("")
else:
    df3 = pd.DataFrame({'Document Type': df['Factuurnummer'].astype(str)   """<?xml version="1.0"?>"""})
print(df3)
                    Document Type
0           <?xml version="1.0"?>
1  606194584<?xml version="1.0"?>
2  202032291<?xml version="1.0"?>
 

Желаемый результат:

                Document Type
0  
1  606194584<?xml version="1.0"?>       
2  202032291<?xml version="1.0"?>
 

Итак, я хочу сделать это для каждого столбца в df. Пожалуйста, помогите, я пережевывал это в течение последних часов, хахаа

Ответ №1:

В python, NaN != NaN . Вот как это работает для большинства чисел с плавающей запятой, поскольку это часть спецификации IEEE-754.

 >>> float("NaN")
nan
>>> float("NaN") == float("NaN")
False
 

поэтому вместо использования if i == np.nan вы должны использовать if np.isnan(i)

Документация: https://numpy.org/doc/stable/reference/generated/numpy.isnan.html

Комментарии:

1. Ошибка типа: ufunc ‘isnan’ не поддерживается для типов ввода, и входные данные не могут быть безопасно приведены к любым поддерживаемым типам в соответствии с правилом приведения «safe»

2. на этом этапе я предлагаю вам просмотреть свой код. Я не уделял слишком много внимания, но вы используете for rows in a , а затем сравниваете с. i Что это? Является ли переменная i or rows ?

3. Это a, потому что я должен извлекать значения из a .

4. Не могли бы вы мне помочь?