如何抛出KeyError而不是使用pandas DataFrame返回NaN

时间:2017-06-06 15:40:36

标签: python pandas

我想知道是否有办法使用值列表索引DataFrame 这样当一个键不存在时,抛出KeyError而不是返回 NaN

import pandas as pd
df = pd.DataFrame([[2,6],[2,7]], index=['A', 'B'], columns=['type1', 'type2'])

对于索引单个值,这可以按需要使用

df.loc["A", ["type3"]]
...
KeyError: 'the label [type3] is not in the [index]'

但是使用多个键会返回NaN

df.loc["A", ["type2", "type3"]]
type2    6.0
type3    NaN
Name: A, dtype: float64

有一些明显的黑客行为,例如循环列表,但我是 想知道是否有更清洁/更有效的解决方案?

1 个答案:

答案 0 :(得分:1)

没有.loc缺少的列名确实会导致错误。因此,只需链接:

df[["type2", "type3"]].loc["A",:]

我一直很喜欢'NaN'返回的功能。每当我想使测试数据与火车数据兼容时,都派上用场了。但是,现在在pandas 1.0中,即使.loc缺少列名也会导致异常