Я пытаюсь clean
очень большой фрейм данных с помощью Pandas.
Набор данных содержит повторяющиеся столбцы для таких показателей, как высота, вес, пол и возраст. Некоторые из строк имеют данные для имени столбца currentAge
тогда как другие строки имеют данные для имени столбца currentAge2
.
Итак, я хочу отбросить строки с NaN
как в currentAge
и в currentAge2
например, потому что они бесполезные точки данных. Я хотел бы сделать то же самое для всех других показателей.
Индекс моего фрейма данных начинается с 0. Ниже приведен код, который я попробовал.
for index, row in csv.iterrows():
if ((math.isnan(row['currentAge']) and math.isnan(row['currentAge2'])) == True):
csv.drop(csv.index[index])
Это не работает, и когда я использую in place = True, я получаю ошибку индекса за пределами границ. Если кто-то может пролить свет на то, как я мог бы правильно очистить этот фрейм данных, это было бы здорово. csv - это имя моего фрейма данных.
Я не думаю, что нам нужно iterrows
здесь.
csv[~(csv['currentAge'].isnull())&(csv['currentAge2'].isnull())]
Если вы хотите сбросить строки с помощью NaN в currentAge
и currentAge2
, вы также можете попробовать:
csv.dropna(how='all', subset=['currentAge','currentAge2'], inplace=True)
В документах объяснить, как kwargs, how
и subset
работу. Это также проще в использовании, если вам нужно рассмотреть больше столбцов.
Надеюсь, это поможет.
and
(&) с двумя условиями (также, если это то, что вам нужно, вы хотели бы повысить и принять его?)