如何从pandas groupby操作得到的DataFrame中提取City索引列表
问题解答
1. 你的认知正确性验证
你的认知是基本正确的,pandas的DataFrameGroupBy可迭代对象每次迭代都会返回一个二元组:
- 第一个元素为当前分组的分组键值,也就是你这里的City名称
- 第二个元素为该分组对应的子数据集,包含当前City对应的所有行数据
所以写for city, df in groupby_result的逻辑是完全成立的,每次迭代会自动把城市名赋值给city,对应子数据集赋值给df。
2. 多变量循环报错的原因
这个是Python基础的元组解包规则导致的:groupby迭代返回的永远只有2个元素的元组,你尝试用city,df,df1,df2...三个及以上的变量去接收返回值,左边变量数量和右边返回的元素数量不匹配,自然会触发解包报错。
另外你提到type(df)返回list的情况不符合pandas默认行为,正常返回的第二个元素类型是pandas.DataFrame,如果出现list类型建议检查你生成groupby对象的前置代码是否做了额外的转换处理。
3. 提取所有City名称列表的最简方法
不需要循环遍历,直接调用groupby对象的groups属性即可快速拿到:city_list = list(your_groupby_obj.groups.keys())
如果还没做groupby操作,也可以直接从原DataFrame提取:city_list = df['City'].unique().tolist()
内容的提问来源于stack exchange,提问作者robocon20x
相关产品推荐
相关产品推荐

