python - 从现有数据框的子集自动创建数据框
问题描述
我正在使用 kaggle 纽约市 Airbnb 开放数据,可在此处获得: https ://www.kaggle.com/dgomonov/new-york-city-airbnb-open-data
数据包含一列“neighbourhood_groups”,由纽约市的 5 个行政区组成,“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')
所有这一切的好处是,在绝对必要时不会复制底层数据,pandas 可以根据需要使用不同的过滤器和切片查看相同的数组。
推荐阅读
- python - ViewSet、ModelViewSet、APIView的区别
- c# - Visual Studio C# ODBC Sharepoint 连接器只读字段错误
- flutter - 将数据从屏幕传递到抽屉颤动
- sql - 如何在迁移文件中添加新列
- django-rest-framework - 如何使用 drf_yasg 显示排序
- instagram - Instagram 图形 api 获得关注和追随者数量
- reactjs - 如何解决 testing-library-react 中的“更新未包含在 act() 中”警告?
- python - 在 tkinter 中重复创建和删除对象(例如矩形)时间延迟
- asp.net-core-mvc - MVC 核心验证 - 最初呈现为有效
- c# - 使用枚举的计算器