如何用简洁语法获取DataFrame中A/B列的可用值(避免KeyError)
解决方法
利用集合交集快速定位存在的列
因为DataFrame仅包含A或B列,通过集合交集能直接拿到存在的列名,再取值:# 一行简洁写法 Value = df.at['Total', next(iter({'A', 'B'} & df.columns))]逻辑:
{'A', 'B'} & df.columns会返回仅包含存在列的集合,next(iter(...))直接取出这个唯一元素,完全不用分支判断。用DataFrame的
get方法简化取值
借助df.get()的默认值特性,当目标列不存在时自动返回备选列,再提取对应行的值:Value = df.get('A', df['B']).at['Total']逻辑:如果列'A'存在,
df.get('A')返回'A'列;不存在则返回df['B'](题目保证此时B一定存在),最后通过.at['Total']拿到目标值。try-except捕获异常(紧凑版)
虽然不是一行表达式,但可以写成紧凑形式,适合偏好异常捕获的场景:try: Value = df.at['Total','A'] except KeyError: Value = df.at['Total','B']
内容的提问来源于stack exchange,提问作者Bijan
相关产品推荐
相关产品推荐

