我正在使用kaggle New York City Airbnb Open Data,该数据可在此处获得:https://www.kaggle.com/dgomonov/new-york-city-airbnb-open-data
该数据包含一列“neighbourhood _groups”和“neighbourhood”,前者由纽约市的5个区组成,后者由每个邻居组中的邻区组成。
我用以下代码创建了曼哈顿社区的一个子集:
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:列表索引必须是整数或切片,而不是字符串
谢谢。
发布于 2020-08-20 10:49:06
除非绝对必要,否则不应复制到新的dfs中。尽可能多地使用完整的df进行分析。使用.groupby,如下所示
by_neigh = airbnb.groupby('neighbourhood_group')然后根据需要使用.agg、.apply或.transform。或者作为最后的手段,您可以使用
for neigh, rows in by_neigh:或者只获得一个组,
by_neigh.get_group('Manhattan')这样做的好处是底层数据不会被复制到绝对必要的时候,pandas可以根据需要使用不同的过滤器和切片来查看相同的数组。
在docs中阅读更多内容
https://stackoverflow.com/questions/63497505
复制相似问题