如何在Python Pandas DataFrame中为城市字段添加医院计数新列
统计各城市医院数量并添加至原DataFrame
问题描述
我有一个名为hospitals的Pandas DataFrame,包含hospital_id、name、city等字段。想要统计每个城市的医院数量,并将该结果作为名为Count的新列添加到原DataFrame中。尝试了以下代码但未成功:
print(df.groupby('city').agg({ 'city': pd.Series.nunique }))
原DataFrame示例:
hospital_id name city 0 1 Cassel Hospital London 1 2 Oaklands Hospital Manchester 2 3 Bromley Hospital London
期望得到的DataFrame格式:
hospital_id name city Count 0 1 Cassel Hospital London 2 1 2 Oaklands Hospital Manchester 1 2 3 Bromley Hospital London 2
解决方法
你之前的代码仅统计了各城市的唯一值数量,并未将结果关联回原DataFrame。可以使用groupby结合transform方法,直接为原DataFrame添加目标列:
实现代码
# 为原DataFrame添加Count列,统计对应城市的医院数量 hospitals['Count'] = hospitals.groupby('city')['city'].transform('count')
代码说明
groupby('city'):按city字段对DataFrame分组['city'].transform('count'):对每个分组计算记录行数(即该城市的医院总数),并将结果按原DataFrame的索引映射,确保每一行都能匹配到对应城市的数量- 直接将结果赋值给
hospitals['Count'],即可得到符合预期的DataFrame
内容的提问来源于stack exchange,提问作者Primo4151
相关产品推荐
相关产品推荐

