Python 3 / Pandas
Я пытаюсь использовать функцию для проверки значений различных столбцов в кадре данных и выбрать только значение из столбца, который является не NaN.
Данные структурированы, поэтому существует один основной столбец df['C1']
, который я хочу заполнить на основе значения в одном из следующих четырех столбцов, df['C2'], df['C3'], df['C4']
и df['C5']
. Когда я наблюдаю данные, я вижу, что в строках df['C2'], df['C3'], df['C4']
и df['C5']
каждый столбец имеет значение NaN, за исключением одного столбца, который имеет текстовое значение. Это верно для всех строк в кадре данных. Я пытаюсь написать функцию, которая будет применяться к фрейму данных, чтобы найти столбец с текстовым значением, и скопировать это значение из столбца в df['C1']
.
Вот функция, которую я написал:
def get_component(df):
if ~df['C2'].isna():
return df['C2']
elif ~df['C3'].isna():
return df['C3']
elif ~df['C4'].isna():
return df['C4']
elif ~df['C5'].isna():
return df['C5']
df['C1'] = df.apply(get_component, axis=1)
Но я получаю следующую ошибку:
AttributeError: ("'float' object has no attribute 'isna'", 'occurred at index 0')
Любые идеи о том, как исправить эту ошибку, чтобы я мог достичь этой цели? Есть ли другой способ добиться того же результата?
Спасибо за помощь!