#python #pandas #dataframe
#python #pandas #фрейм данных
Вопрос:
У меня есть фрейм данных pandas, который работает просто отлично. Я пытаюсь выяснить, как определить, содержит ли столбец с меткой, которую я знаю, если она правильная, не все одинаковые значения.
Код
below errors out for some reason when I want to see if the column contains -1 in each cell
# column = "TheColumnLabelThatIsCorrect"
# df = "my correct dataframe"
# I get an () takes 1 or 2 arguments but 3 is passed in error
if (not df.loc(column, estimate.eq(-1).all())):
Я только что узнал о .eq() и .all() и, надеюсь, я использую их правильно.
Ответ №1:
Это проблема синтаксиса — см. Документы для .loc
/indexing . В частности, вы хотите использовать []
вместо ()
Вы можете сделать что-то вроде
if not df[column].eq(-1).all():
...
Если вы хотите использовать .loc
конкретно, вы бы сделали что-то подобное:
if not df.loc[:, column].eq(-1).all():
...
Кроме того, обратите внимание, что вам не нужно использовать .eq()
, вы можете просто сделать (df[column] == -1).all())
, если хотите.
Комментарии:
1. я вижу. Я использовал . loc, когда мне это было не нужно.
Ответ №2:
Вы можете удалить дубликаты, и если вы получите только одну запись, это означает, что все записи одинаковы.
import pandas as pd
df = pd.DataFrame({'col': [1, 1, 1, 1]})
len(df['col'].drop_duplicates()) == 1
> True
Ответ №3:
Вопрос не такой ясный. Давайте попробуем следующее
Содержит только -1 в каждой ячейке
df['estimate'].eq(-1).all()
Содержит -1 в любой ячейке
df['estimate'].eq(-1).any()
Отфильтруйте -1 и все столбцы
df.loc[df['estimate'].eq(-1),:]
Ответ №4:
df['column'].value_counts()
предоставляет вам список всех уникальных значений и их количество в столбце. Что касается проверки, являются ли все значения определенным числом, вы можете сделать это, удалив дубликаты и проверив, что длина равна 1.
len(set(df['column'])) == 1