如何在Python中打印Pandas Series中值为偶数的键值对
如何在Pandas Series中打印偶数值对应的索引与值
嘿,我一眼就看到问题出在哪了——那个SyntaxError完全是因为你在print()里写了赋值语句var[i]=m,Python根本不允许在表达式里塞赋值操作,这就是报错的直接原因。而且这里还有个逻辑bug:你遍历sd时拿到的i是Series里的值,不是索引位置,用var[i]去取索引完全不对,比如值为2的时候,var[2]会取到'c',但你实际要的是对应值2的索引'b'呀。
咱们一步步来修正:
错误原因拆解
- 核心报错点:
print()函数里只能放表达式,不能包含=赋值操作,这是Python的语法规则。 - 逻辑错误:遍历
sd时for i in sd拿到的是Series的数值,不是索引位置,用数值去索引var列表完全不符合需求。
修正后的代码方案
最直接的方法是用Series的items()方法(新版Pandas推荐用这个,替代旧的iteritems()),它能让你同时遍历每个元素的索引和对应的值,然后判断值是否为偶数,再按你要的格式打印:
import pandas as pd data = [1,2,3,4] var = ['a','b','c','d'] sd = pd.Series(data, index=var) # 明确指定index参数,代码可读性更强 # 同时遍历索引和值 for idx, value in sd.items(): if value % 2 == 0: print(f"{value} -> {idx}")
运行结果
运行上面的代码后,就能得到你期望的输出:
2 -> b 4 -> d
另外给你个更贴合Pandas风格的写法:先用布尔索引筛选出所有偶数值的Series,再遍历打印,代码更简洁:
# 先筛选偶数值的子Series filtered_sd = sd[sd % 2 == 0] for idx, value in filtered_sd.items(): print(f"{value} -> {idx}")
内容的提问来源于stack exchange,提问作者codeholic24
相关产品推荐
相关产品推荐

