ValueError: The truth value of a GeoDataFrame is ambiguous

ValueError: The truth value of a GeoDataFrame is ambiguous

过滤某些 'name' 值时出现问题。我想按月份和名称分组,然后从列名 'ar street3' 中过滤特定值并形成趋势。

这是我在下面写的代码:

df = pd.DataFrame({ 
'name'  : ['ar street3', 'ar street 3', 'ba foo', 'br', ' oo', 'ke'],
'month' : [1, 2, 3, 4, 5, 6],
'score' : [2.0, 5., 8., 1., 2., 9.]})

{fig, ax = plt.subplots(figsize=(11,7))
df.groupby(['month', 'name']).filter(lambda x: 'ar street3' in x,df).mean(['score']).unstack().plot(ax.ax)}

我遇到这种类型的错误:

ValueError:GeoDataFrame 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

有人能给我指出正确的方向吗?

提前致谢。

如果你想在一行代码中结合使用 filter 和 groupby:

df = pd.DataFrame({'name'  : ['ar street3', 'ar street3', 'ba foo', 'br', ' oo', 'ke'],
                   'month' : [1, 2, 3, 4, 5, 6],
                   'score' : [2.0, 5., 8., 1., 2., 9.]})

tag = 'ar street3'
df = df.groupby(['month', 'name']).filter(lambda x: tag in x.name)

print(df)

输出:

         name  month  score
0  ar street3      1    2.0
1  ar street3      2    5.0

如果要添加月份条件:

tag = 'ar street3'; month = 1
df = df.groupby(['month', 'name']).filter(lambda x: tag in x.name and month == x.month)

         name  month  score
0  ar street3      1    2.0

如果你只想要月份:

#i have adapted the sample
df = pd.DataFrame({'name'  : ['ar street3', 'ar street3', 'ba foo', 'br', ' oo', 'ke'],
               'month' : [1, 2, 3, 4, 5, 1],
               'score' : [2.0, 5., 8., 1., 2., 9.]})

month = 1
df = df.groupby(['month', 'name']).filter(lambda x: month == x.month)

输出:

         name  month  score
0  ar street3      1    2.0
5          ke      1    9.0