Ошибка при фильтрации фрейма данных с помощью вызова loc

#python #python-3.x #pandas

#python #python-3.x #pandas

Вопрос:

Я полный новичок в Python и Pandas. Я следую руководству, и пока у меня есть следующий код:

 import numpy as np
import pandas as pd
import plotly as pyplot
import datetime

df = pd.read_csv("GlobalLandTemperaturesByCountry.csv")
df = df.drop("AverageTemperatureUncertainty", axis=1)
df = df.rename(columns={"dt": "Date"})
df = df.rename(columns={"AverageTemperature": "AvTemp"})
df = df.dropna()

df_countries = df.groupby(["Country", "Date"]).sum().reset_index().sort_values("Date", ascending=False)

start_date = "2001-01-01"
end_date = "2002-01-01"
mask = (df_countries["Date"] > start_date) amp; (df_countries["Date"] <= end_date)

df_mask = df_countries.loc(mask)
  

Когда я пытаюсь запустить код, я получаю ошибку в последней строке, т. Е. df_mask = df_countries.loc(mask) ошибка, являющаяся:

 TypeError 'Series' objects are mutable, thus they cannot be hashed
  

Я уже нашел несколько ответов StackOverflow на эту ошибку, но, похоже, ни один из них не соответствует моему сценарию настолько, чтобы помочь. Почему я получаю эту ошибку?

Комментарии:

1. как насчет df_countries.loc[mask] или df_countries[mask] , docs

Ответ №1:

В приведенном выше примере df_countries — это фрейм данных, и маска, похоже, является условием, которое должно быть применено к этому фрейму данных.

Объект является изменяемым, что означает, что его значение может быть изменено без переназначения ему той же переменной, его содержимое изменится в какой-то момент кода. В результате его значение хэша изменится, поэтому они не могут быть хэшированы.

Попробуйте:

df_mask = df_countries.loc[(маска)]