如何从现有pandas Series提取指定值并保留原索引创建新Series?
提取Series指定值并保留原索引的解决方案
错误原因说明
你之前使用s.values(['America/New_York'])报错,是因为s.values返回的是numpy数组,数组不能通过括号调用(这是函数调用语法),所以触发TypeError。另外你对loc的理解有误——loc不仅支持按索引标签筛选,还支持布尔条件筛选。
正确实现方法
以下三种方法都能实现需求,任选其一即可:
方法1:布尔索引直接筛选
这是最直观简洁的方式,通过条件判断生成布尔数组,直接筛选目标元素:
s1 = s[s == 'America/New_York']
方法2:使用loc筛选
loc支持布尔索引,写法更明确:
s1 = s.loc[s == 'America/New_York']
方法3:query方法(类SQL风格)
如果偏好类SQL的语法,可以使用query:
s1 = s.query('values == "America/New_York"')
结果验证
运行上述代码后,得到的s1会保留原Series中所有值为America/New_York的元素,以及它们在原Series中的索引位置,示例输出如下:
0 America/New_York 2 America/New_York 4 America/New_York ... 3435 America/New_York 3439 America/New_York Length: X, dtype: object
其中X为原Series中America/New_York的实际数量。
内容的提问来源于stack exchange,提问作者JP1990
相关产品推荐
相关产品推荐

