首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从现有数据帧的子集自动创建数据帧

从现有数据帧的子集自动创建数据帧
EN

Stack Overflow用户
提问于 2020-08-20 10:33:05
回答 1查看 29关注 0票数 0

我正在使用kaggle New York City Airbnb Open Data,该数据可在此处获得:https://www.kaggle.com/dgomonov/new-york-city-airbnb-open-data

该数据包含一列“neighbourhood _groups”和“neighbourhood”,前者由纽约市的5个区组成,后者由每个邻居组中的邻区组成。

我用以下代码创建了曼哈顿社区的一个子集:

代码语言:javascript
复制
airbnb_manhattan = airbnb[airbnb['neighbourhood_group'] == 'Manhattan']

我想按邻居创建此数据帧的更多子集。然而,有32个邻居,所以我想自动化这个过程。

这是我尝试过的代码:

代码语言:javascript
复制
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:列表索引必须是整数或切片,而不是字符串

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-08-20 10:49:06

除非绝对必要,否则不应复制到新的dfs中。尽可能多地使用完整的df进行分析。使用.groupby,如下所示

代码语言:javascript
复制
by_neigh = airbnb.groupby('neighbourhood_group')

然后根据需要使用.agg.apply.transform。或者作为最后的手段,您可以使用

代码语言:javascript
复制
for neigh, rows in by_neigh:

或者只获得一个组,

代码语言:javascript
复制
by_neigh.get_group('Manhattan')

这样做的好处是底层数据不会被复制到绝对必要的时候,pandas可以根据需要使用不同的过滤器和切片来查看相同的数组。

docs中阅读更多内容

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63497505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档