#python #pandas #dataframe
#python #панды #фрейм данных
Вопрос:
Если у меня есть этот фрейм данных pandas
:
data = [{'Name': 'Tom', 'Age': 42}, {'Name': 'Adam', 'Age': 25}
,{'Name': 'Bill', 'Age': 65}]
df = pd.DataFrame(data)
q = df[df['Name'] == 'Tom']
Как я могу отфильтровать df
, чтобы получить все строки фрейма данных, за исключением того, что я отфильтровал q
Таким образом, он должен возвращать {‘Name’: ‘Adam’, ‘Age’: 25} и {‘Name’: ‘Bill’, ‘Age’: 65} .
Спасибо!
Комментарии:
1. Должен ли возвращаться Adam или Tom?
Ответ №1:
Для этого вы можете использовать LOC и ~ . Это поможет вам «фильтровать» ваш DF
df = df.loc[~df.Name.isin(['Adam']),:]
Ответ №2:
Если возможно, вы можете инвертировать маску !=
на значение не равно:
new = df[df['Name'] != 'Tom']
print (new)
Name Age
1 Adam 25
2 Bill 65
Другая идея — удалить значения индекса q
из оригинала DataFrame
, но она работает хорошо, только если уникальные значения индекса:
q = df[df['Name'] == 'Tom']
new = df.drop(q.index)
print (new)
Name Age
1 Adam 25
2 Bill 65