如何无需指定每个城市按UF列拆分Pandas DataFrame?
按城市列拆分Pandas DataFrame的更优方法
当然有更简洁高效的实现,直接用Pandas内置的groupby方法就行,完全不用手动处理去重和循环判断:
方法1:获取分组对象(最灵活)
直接按"UF"列分组,得到一个可迭代的分组对象,后续可以按需提取数据:
city_groups = people.groupby("UF")
想要单独取某城市的数据时,用get_group方法:
# 提取SP城市的DataFrame sp_data = city_groups.get_group("SP")
方法2:生成和原代码一样的列表格式
一行代码就能生成所有城市DataFrame组成的列表:
temporary = [group for _, group in people.groupby("UF")]
这里的_是占位符,用来接收分组的城市名称(如果不需要存城市名的话)。
方法3:生成城市名对应DataFrame的字典(更实用)
如果需要快速通过城市名定位数据,转成字典会更方便:
city_data_dict = {city: group for city, group in people.groupby("UF")}
之后直接通过city_data_dict["RJ"]就能拿到对应城市的人员数据。
对比你原来的代码,groupby是Pandas专门为分组场景优化的方法,内部处理逻辑更高效,尤其是数据量较大时,性能优势会很明显。
内容的提问来源于stack exchange,提问作者Fabio Figueiredo
相关产品推荐
相关产品推荐

