You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用pandas统计DataFrame中配套设施总数量最多的城市

核心问题说明

amenities列存储的是类集合格式的字符串,直接调用len()统计的是字符串的字符总数,而非集合内的元素数量,需要先对该列做格式转换再统计。

解决步骤
  • 第一步:清理字符串中的特殊符号(大括号、双引号、换行符)
  • 第二步:按逗号分割字符串得到单个设施的列表,统计每行的设施数量
  • 第三步:按城市分组求和总设施数,取最大值对应的城市
修正后可运行代码
# 处理amenities列:去除特殊符号、按逗号分割为列表
host["amenities"] = host["amenities"].str.replace(r'["{}\n]', "", regex=True).str.split(",")
# 统计每行的设施数量
host["am_count"] = host["amenities"].apply(len)
# 按城市分组求和总设施数,返回总数量最多的城市名
result = host.groupby("city")["am_count"].sum().idxmax()
print(result)
代码优化说明
  1. 正则匹配补充了\n规则,可直接清理字段内的换行符,避免影响分割结果
  2. 用apply(len)替代列表推导式,写法更符合pandas语法规范,执行效率更高
  3. 将argmax()替换为idxmax(),可直接返回最大值对应的城市名,无需再手动匹配索引,兼容性和可读性更好

内容的提问来源于stack exchange,提问作者user177196

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 21:36:03