У меня есть столбцы A и B, где столбец A редко имеет данные, а столбец B полностью заполнен. Я хочу скопировать столбец B в столбец A и всегда сохранять любое значение, которое столбец A имеет над столбцом B.
Длина моего кадра данных составляет около 1,5 миллиона, поэтому df.iterrows() - это решение, однако это будет очень трудоемким. Есть ли оптимизированная функция панды или трюк, чтобы сделать это максимально эффективно?
Я бы использовал.loc, чтобы это сделать
df.loc[df['A'].isnull(), 'A'] = df['B']
Это читается так: расположен где столбец "А" равен нулю и задан столбец "А", равный столбцу "В".
iterrows
будет абсолютно медленным. Весь смысл панд в том, чтобы распараллеливать такие операции; в противном случае вы можете просто использовать набор значений.
Вы можете попробовать что-то вроде
df["A"][df["A"].isna()] = df["B"][df["A"].isna()]
Изменение: комментатор указал, что в этой проблеме уже существует метод в пандах, поэтому используйте это вместо этого.