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

从DataFrame提取值时意外引入索引信息的问题解决

解决Python提取南美洲女性人口数据时获取纯数值列表的问题

问题原因

你提取数据时返回的是Pandas的Series对象(包含索引、列名等元信息),而非纯数值,导致无法直接求和。

解决方案

方法1:遍历提取单个数值(适合单国家单条数据场景)

通过loc定位行和列,再用iloc[0]提取Series中的唯一数值:

import pandas as pd

def get_sa_female_pop(year):
    # 读取人口数据CSV
    pop_df = pd.read_csv('population.csv')
    # 南美洲国家列表(根据你的实际数据调整)
    sa_countries = ['巴西', '阿根廷', '秘鲁', '哥伦比亚', '智利', '委内瑞拉']
    female_pop_list = []
    
    for country in sa_countries:
        # 精准定位对应国家、对应年份的女性人口数值
        pop_value = pop_df.loc[pop_df['国家'] == country, f"{year}_女性人口"].iloc[0]
        female_pop_list.append(pop_value)
    
    # 直接求和
    total = sum(female_pop_list)
    return female_pop_list, total

# 调用示例
pop_list, total_pop = get_sa_female_pop(2020)
print(f"纯数值列表:{pop_list}")
print(f"总人口:{total_pop}")

方法2:批量筛选(更高效,无需循环)

利用isin批量筛选所有南美洲国家,直接提取整列转成纯数值列表:

import pandas as pd

def get_sa_female_pop(year):
    pop_df = pd.read_csv('population.csv')
    sa_countries = ['巴西', '阿根廷', '秘鲁', '哥伦比亚', '智利']
    
    # 筛选所有南美洲国家的行
    sa_pop_df = pop_df[pop_df['国家'].isin(sa_countries)]
    # 提取目标年份列,转成纯数值列表(自动忽略索引和列信息)
    female_pop_list = sa_pop_df[f"{year}_女性人口"].tolist()
    
    # 处理可能的缺失值(可选)
    # female_pop_list = sa_pop_df[f"{year}_女性人口"].dropna().tolist()
    
    total = sum(female_pop_list)
    return female_pop_list, total

关键说明

  • 避免直接用pop_df[(pop_df['国家'] == country)][列名],这种写法返回的是Series而非单个值
  • iloc[0]用于确保提取Series中的第一个(也是唯一的)数值,若你的数据中一个国家有多条数据,需根据需求调整逻辑
  • 批量筛选的方法更适合大数据量场景,性能优于循环遍历

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 08:48:17