我发现在尝试引用它之前,我经常需要检查数据框中是否存在列或行.例如,我最终添加了许多代码,如:
if 'mycol' in df.columns and 'myindex' in df.index: x = df.loc[myindex, mycol]
else: x = mydefault
Run Code Online (Sandbox Code Playgroud)
有没有办法更好地做到这一点?例如,在我可以做的任意对象上x = getattr(anobject, 'id', default)
- 在熊猫中有类似的东西吗?真的有办法实现我正在做的更优雅吗?
EdC*_*ica 32
有一种方法Series
:
所以你可以这样做:
df.mycol.get(myIndex, NaN)
Run Code Online (Sandbox Code Playgroud)
例:
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
Run Code Online (Sandbox Code Playgroud)
Foo*_*Bar 12
Python有这种心态要求宽恕而不是许可.你会发现很多关于此事的帖子,我偶然发现了现在的第一个就是这一个.
也就是说,在你的例子中它可能会
try:
x = df.loc['myindex', 'mycol']
except KeyError:
x = mydefault
Run Code Online (Sandbox Code Playgroud)
我现在不能运行Pandas所以我不确定它究竟是一个IndexError,但我相信如此.