Pandas DataFrame列名与第0行值生成键值对报ValueError解决
问题解决方法
错误原因
代码报错的核心原因是列表推导式中错误使用了逻辑运算符and来同时遍历两个序列,Python会尝试将df.columns[2:4]作为布尔值判断,而Pandas的索引对象无法直接做布尔判断,因此抛出了ValueError: The truth value of a Index is ambiguous的错误。
修复方案
方案1:修改原列表推导式
使用zip()函数同时绑定列名和对应行的数值,遍历配对:
pt = [(k, l) for k, l in zip(df.columns[2:4], df.iloc[0, 2:4])] pt_dict = dict(pt)
方案2:更简洁的Pandas原生方法
直接取指定行和列后调用to_dict()方法,一步生成目标字典:
pt_dict = df.iloc[0, 2:4].to_dict()
两种方案运行后都可以得到期望的输出:
{'Revenue': 4, 'Cost': 5}
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

