告诉python在迭代数据帧列表时忽略未定义的数据帧?

时间:2017-12-01 02:39:17

标签: python pandas

考虑这个数据帧和迭代:

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对列表中定义的对象进行操作的方法是什么,只是忽略未定义的对象?

2 个答案:

答案 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(),那会满足吗?尝试一下。

难以复制,因为我没有所有代码。