使用loc过滤DataFrame时出错

时间:2020-08-27 04:09:57

标签: 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) & (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 个答案:

答案 0 :(得分:0)

在上面的示例中df_countries是数据帧,而掩码似乎是要应用于此数据帧的条件。

该对象是可变的,这意味着可以更改其值而无需为它重新分配相同的变量,它的内容将在代码中的某个位置更改。结果,其哈希值将改变,因此无法对其进行哈希处理。

尝试:

df_mask = df_countries.loc [(mask)]