#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
orrows
?3. Это a, потому что я должен извлекать значения из a .
4. Не могли бы вы мне помочь?