Python:如何从Series的每行列表中提取第三个元素?
解决方法:提取Series中每个列表的第三个元素
首先咱们得理清问题根源:df[:][2] 并不是对每个列表元素做索引,而是在Series层面取元素。具体来说,df[:] 返回整个Series,后续的[2]是按Series的索引(或位置)取出某一行,而非遍历每个列表提取第三个值——这就是你得到原Series中索引3对应行([4, C, H])的原因。
正确的语法有两种常用方式:
1. 使用apply()方法遍历每个元素
这是最直观的方式,对Series里的每个列表单独执行索引操作:
# 提取每个列表的第三个元素,并保留为列表形式 new_series = df.apply(lambda x: [x[2]])
如果不需要把结果包裹在列表里,直接取单个值的话,可以去掉括号:
new_series = df.apply(lambda x: x[2])
2. 使用Pandas的.str属性
由于你的Series元素都是列表,Pandas提供了.str属性来便捷处理这类序列型元素,写法更简洁:
# 直接提取每个列表的第三个元素(返回单个值) new_series = df.str[2] # 如果需要保留列表形式,再加一层apply转换 new_series = df.str[2].apply(lambda x: [x])
验证结果
用你的示例数据测试,两种方法都会得到你预期的输出:
Index Information 1 [C] 2 [C] 3 [H] 4 [H] 5 [H] 6 [H]
总结一下:别把Series的索引操作和列表的索引操作混淆啦,要对每个元素做针对性处理,就得用遍历类方法(比如apply)或者Pandas专门的序列处理属性(.str)。
内容的提问来源于stack exchange,提问作者kdba
相关产品推荐
相关产品推荐

