如何在pandas DataFrame中根据字符串条件提取对应浮点数值
问题原因
你现在用loc筛选得到的结果是pandas Series对象,哪怕只有1条匹配结果,它依然是一维序列结构,不是单个浮点数值。
解决方法
方法1:直接提取Series的唯一标量值(推荐)
如果你能确定每个国家在表中唯一、查询只会返回1条结果,直接调用item()方法即可提取对应浮点值:
density = country_data.loc[country_data["Country"] == country, "Population Density"].item()
如果查询的国家不存在、或存在多条重名国家的条目,这个方法会直接抛出错误,方便你快速排查数据问题,安全性更高。
方法2:取Series的首个元素
也可以通过索引取Series的第一个值:
density = country_data.loc[country_data["Country"] == country, "Population Density"].iloc[0]
方法3:提前设置国家为索引(查询频次高的场景更推荐)
如果需要多次查询不同国家的数值,可以先把Country列设为索引,后续查询更简洁高效:
# 先设置索引,只需执行一次 country_data = country_data.set_index("Country") # 后续查询直接写即可得到数值 density = country_data.loc[country, "Population Density"]
内容的提问来源于stack exchange,提问作者alangap23
相关产品推荐
相关产品推荐

