考虑这个数据帧和迭代:
pdata= {'col1': [1, 2], 'col2': [3, 4]}
pdata= pd.DataFrame(data=pdata)
for i in [pdata, vdata, odata]:
i.index = i.iloc[:, 0]
如果没有定义任何pdata,vdata或odata,Python会抛出错误:
NameError: name 'vdata' is not defined
偶尔,我想运行命令,而vdata和odata尚未定义。告诉python对列表中定义的对象进行操作的方法是什么,只是忽略未定义的对象?
答案 0 :(得分:0)
使用try-except
子句跳过错误:
try:
for i in [pdata, vdata, odata]:
i.index = pd.DatetimeIndex(i.date)
except:
# You can do whatever you want here; pass does nothing
pass
答案 1 :(得分:0)
pdata= {'col1': [1, 2], 'col2': [3, 4]}
pdata= pd.DataFrame(data=pdata)
if pdata in locals():
for i in [pdata]:
i.index = i.iloc[:, 0]
if vdata in locals():
for i in [vdata]:
i.index = i.iloc[:, 0]
if odata in locals():
for i in [odata]:
i.index = i.iloca[:, 0]
我目前无法对此进行测试,但是如果我们在if条件中检查locals(),那会满足吗?尝试一下。
难以复制,因为我没有所有代码。