#python #pandas #numpy
#python #pandas #numpy
Вопрос:
В настоящее время я работаю с pandas DataFrame
s. Во время итерации по нему я хочу проверить, является ли значение numpy.nan
или списком.
for i, row in df.iterrows():
value = row["Name"]
if pd.isnull(value):
dosomething()
Это работает просто отлично, за исключением того, что
type(value) == list
Затем я подумал, может быть, поместить any()
вокруг:
for i, row in df.iterrows():
value = row["Name"]
if any(pd.isnull(value)):
dosomething()
Но теперь я получаю исключение каждый раз, когда значение имеет значение NaN
, потому что оно, очевидно, не может быть повторено.
Есть ли лучшее решение, чем проверка типа значения?
Ответ №1:
Используйте or
:
for i, row in df.iterrows():
value = row["Name"]
if pd.isnull(value) or (type(value) == list):
dosomething()
Другой способ проверки isinstance
:
for i, row in df.iterrows():
value = row["Name"]
if pd.isnull(value) or isinstance(value, list):
dosomething()
Комментарии:
1. Но я все равно получаю сообщение об ошибке, если тип (значение) ==список (ValueError: истинное значение массива с более чем одним элементом неоднозначно. Используйте.any() или.all())
2. @aAnnAa — Возможно, дублируются столбцы, тогда нужно
any(pd.isnull(value) or (type(value) == list))
3. Теперь это работает с «if not isinstance(value, list) and pd.isnull(value)», большое спасибо за вашу помощь 🙂