Я имею это DataFrame
и хочу только записи, EPS
столбец которых не NaN
:
>>> df
STK_ID EPS cash
STK_ID RPT_Date
601166 20111231 601166 NaN NaN
600036 20111231 600036 NaN 12
600016 20111231 600016 4.3 NaN
601009 20111231 601009 NaN NaN
601939 20111231 601939 2.5 NaN
000001 20111231 000001 NaN NaN
... то есть что-то вроде df.drop(....)
этого результирующего кадра данных:
STK_ID EPS cash
STK_ID RPT_Date
600016 20111231 600016 4.3 NaN
601939 20111231 601939 2.5 NaN
Как я могу это сделать?
df.dropna(subset = ['column1_name', 'column2_name', 'column3_name'])
Ответы:
Не бросайте, просто возьмите строки, где EPS не NA:
источник
pandas.notnull
вместоnp.isfinite
EPS
в примере) содержит строки или другие типы, которые не могут быть перевареныnp.isfinite()
. Я рекомендую использоватьpandas.notnull()
это, чтобы справиться с этим более щедро.Этот вопрос уже решен, но ...
... также рассмотрите решение, предложенное Воутером в его первоначальном комментарии . Способность обрабатывать недостающие данные, в том числе
dropna()
, встроена в панды явно. Помимо потенциально улучшенной производительности по сравнению с выполнением вручную, эти функции также имеют множество опций, которые могут быть полезны.Есть и другие варианты (см. Документы на http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.dropna.html ), включая удаление столбцов вместо строк.
Довольно удобно!
источник
df.dropna(subset = ['column_name'])
. Надеюсь, это сэкономит как минимум одному человеку лишние 5 секунд «что я делаю неправильно». Отличный ответ, +1df.dropna(subset = ['column_name'])
это именно то, что я искал! Спасибо!Я знаю, что на этот вопрос уже был дан ответ, но только ради решения панд на этот конкретный вопрос, в отличие от общего описания от Амана (что было замечательно), и в случае, если кто-то еще случится с этим:
источник
df.dropna(subset=['EPS'])
(основываясь на общем описании Амана, конечно, это тоже работает)notnull
это также то, что Уэс (автор Панд) предложил в своем комментарии к другому ответу.df[pd.notnull(df[df.columns[INDEX]])]
гдеINDEX
будет нумерованный столбец, если вы не знаете имяВы можете использовать это:
источник
how='all'
здесь избыточно, потому что вы устанавливаете подкадр данных только с одним полем, чтобы оба'all'
и'any'
имели одинаковый эффект.Самое простое из всех решений:
источник
Вы можете использовать метод dataframe notnull или inverse of isnull или numpy.isnan :
источник
Простой и легкий способ
df.dropna(subset=['EPS'],inplace=True)
источник: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.dropna.html
источник
inplace=True
это странная тема, и не влияет наDataFrame.dropna()
. См. Github.com/pandas-dev/pandas/issues/16529еще одно решение, которое использует тот факт, что
np.nan != np.nan
:источник
Другая версия:
источник
Series.notna()
?В наборах данных, имеющих большое количество столбцов, еще лучше увидеть, сколько столбцов содержат нулевые значения, а сколько нет.
Например, в моем фрейме данных он содержал 82 столбца, из которых 19 содержали хотя бы одно нулевое значение.
Кроме того, вы также можете автоматически удалять столбцы и строки в зависимости от того, какие значения больше нуля.
Вот код, который делает это разумно:
Примечание. Приведенный выше код удаляет все ваши нулевые значения. Если вы хотите нулевые значения, обработайте их раньше.
источник
Он может быть добавлен в том смысле, что '&' может использоваться для добавления дополнительных условий, например
Обратите внимание на то, что при оценке утверждений пандам нужна скобка.
источник
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
. Вам нужно добавить скобкиdf = df[(df.EPS > 2.0) & (df.EPS <4.0)]
, но также это не ответ на этот вопрос.По какой-то причине ни один из ранее представленных ответов не работал для меня. Это основное решение сделало:
Хотя, конечно, это также приведет к сбрасыванию строк с отрицательными числами. Так что, если вы хотите их, возможно, стоит добавить это и после.
источник
Одним из решений может быть
Другой способ может быть
Я надеюсь, что это полезно.
источник