为了账号安全,请及时绑定邮箱和手机立即绑定

ValueError:GeoDataFrame 的真值不明确

ValueError:GeoDataFrame 的真值不明确

互换的青春 2021-11-30 16:03:32
在过滤某些“名称”值时遇到问题。我想对月份和名称进行分组,然后从列名 '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 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

如果你想在一行代码中结合 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


查看完整回答
反对 回复 2021-11-30
  • 1 回答
  • 0 关注
  • 179 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信