如何解决从现有数据框的子集中自动创建数据框
我正在使用kaggle纽约市的Airbnb开放数据,可在此处获取: https://www.kaggle.com/dgomonov/new-york-city-airbnb-open-data
数据包含一列“ neighbourhood_groups”(由纽约市的五个行政区组成)和“ neighbourhood”(由每个街区组中的邻居组成)。
我用以下代码创建了曼哈顿区的一个子集:
airbnb_manhattan = airbnb[airbnb['neighbourhood_group'] == 'Manhattan']
我想按邻域创建此数据框的其他子集。但是,有32个社区,所以我想使过程自动化。
这是我尝试过的代码:
manhattan_neighbourhoods = list(airbnb_manhattan['neighbourhood'].unique())
neighbourhoods = pd.DataFrame()
for n in manhattan_neighbourhoods:
neighbourhoods[n] = pd.DataFrame(affordable_manhattan[affordable_manhattan['neighbourhood'] == manhattan_neighbourhoods[n]])
哪个会产生以下错误消息:
TypeError:列表索引必须是整数或切片,而不是str
谢谢。
解决方法
除非绝对必要,否则请勿复制到新的dfs中。尝试使用完整的df进行尽可能多的分析。使用.groupby
by_neigh = airbnb.groupby('neighbourhood_group')
然后根据需要使用.agg
,.apply
或.transform
。或者作为最后的选择,您可以使用
for neigh,rows in by_neigh:
或者只和一组人
by_neigh.get_group('Manhattan')
所有这些的优点是底层数据不会被复制到绝对必要的状态,而熊猫可以根据需要使用不同的过滤器和切片查看同一阵列。
在docs
中了解更多信息版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。