ValueError:GeoDataFrame的真值不明确

时间:2019-03-08 13:39:41

标签: python geopandas

在过滤某些“名称”值时出现问题。我想对月份和名称进行分组,然后从列名“ 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()。

有人可以指出我正确的方向吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

如果要在一行代码中组合过滤器和分组依据:

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