如果pandas dataframe.loc位置不存在,则返回默认值

2024-09-26 22:53:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我发现在试图引用一个数据帧之前,我经常要检查它中是否存在列或行。例如,我最终添加了很多代码,比如:

if 'mycol' in df.columns and 'myindex' in df.index: x = df.loc[myindex, mycol]
else: x = mydefault

有什么办法可以做得更好吗?例如,在任意对象上,我可以做x = getattr(anobject, 'id', default)在pandas中有类似的事情吗?真的有什么办法能让我做得更优雅?


Tags: columnsand数据对象代码indfindex
2条回答

Python有这种心态,要求原谅而不是允许。你会发现很多关于这件事的帖子,比如this one

在Python中捕获异常相对便宜,因此鼓励您使用它。这称为EAFP方法。

例如:

try:
    x = df.loc['myindex', 'mycol']
except KeyError:
    x = mydefault

有一个用于^{}的方法:

所以你可以:

df.mycol.get(myIndex, NaN)

示例:

In [117]:

df = pd.DataFrame({'mycol':arange(5), 'dummy':arange(5)})
df
Out[117]:
   dummy  mycol
0      0      0
1      1      1
2      2      2
3      3      3
4      4      4

[5 rows x 2 columns]
In [118]:

print(df.mycol.get(2, NaN))
print(df.mycol.get(5, NaN))
2
nan

相关问题 更多 >

    热门问题