Python中变量值每次变更后如何存入数组?pandas城市统计场景问题
原代码问题
- 混淆了城市列表索引与数据集行索引,仅前24行能匹配到正确城市,后续行判断全部使用最后一个城市
VILLAVICENCIO做匹配,统计结果错误 - 所有计数共用同一个变量,无法得到每个城市的单独统计值
实现1:循环遍历(易读易理解)
直接遍历已定义的城市列表,逐个统计符合条件的行数存入新列表即可:
import pandas as pd # 你已定义的城市列表 ciudad=['ARMENIA', 'BARRANQUILLA', 'BOGOTA', 'BUCARAMANGA', 'BUENAVENTURA', 'CALI', 'CARTAGENA', 'CUCUTA', 'FLORENCIA', 'IPIALES', 'MANIZALES', 'MEDELLIN', 'MONTERIA', 'NEIVA', 'PASTO', 'PEREIRA', 'POPAYAN', 'RIOHACHA', 'SAN ANDRES', 'SANTA MARTA', 'SINCELEJO', 'TUNJA', 'VALLEDUPAR', 'VILLAVICENCIO'] # 初始化存储各城市统计结果的列表 cuenta_por_ciudad = [] for city in ciudad: # 统计当前城市满足【剩余有效期为0】的总条数 valid_count = len(data[(data["CIUDAD"] == city) & (data["Vida Util Restante(per)"] == 0)]) cuenta_por_ciudad.append(valid_count)
运行后cuenta_por_ciudad的元素顺序和ciudad列表的城市顺序一一对应,无需手动录入城市名称。
实现2:Pandas原生统计(效率更高,适合大数据量)
无需手写循环,调用pandas内置方法完成统计,运行速度比自定义循环更快:
# 先筛选所有剩余有效期为0的行,按城市分组计数 city_count = data[data["Vida Util Restante(per)"] == 0].groupby("CIUDAD").size() # 按你指定的城市列表顺序返回结果,无符合记录的城市自动填充0 cuenta_por_ciudad = city_count.reindex(ciudad, fill_value=0).tolist()
内容的提问来源于stack exchange,提问作者Jorge0913
相关产品推荐
相关产品推荐

