尝试和除了语句,Python

时间:2017-08-23 11:10:16

标签: python pandas exception

这似乎是一个简单的问题,但我无法通过谷歌搜索和阅读Stackoverflow来解决这个问题。

我的问题是如何在变量上使用try语句并将其附加到列表中?

在下面的示例中,我尝试使用文件列表中的pandas获取索引标签。我想将每个转换为变量,将它们全部附加到列表中并连接它们。然而,我很难理解我如何尝试" parsed_file.loc [" Staff" :" Total Staff"]。copy()",并将其转换为要附加到列表中的变量。

我有点明白,在下面的例子中,我试图在全局范围内使用局部范围变量,这会引发NameError。我可以使用一个函数并在函数中返回变量,但我得到一个' TypeError:无法连接非NDFrame对象'。我试图将变量转换为函数中的DataFrame,但它返回相同的错误。

并非所有文件都有索引标签,因此我使用except:KeyError跳过这些文件,然后打印文件位置。

for file_ in allFiles:
        parsed_file = read_workbook(file_)
        parsed_file['filename'] = os.path.basename(file_)
        parsed_file.set_index(0, inplace = True)
        parsed_file.index.str.strip()

        try: Staff_ = parsed_file.loc["Staff" : "Total Staff"].copy()
        except KeyError: 
            print(file_)

        list_.append(Staff_)
frame = pd.concat(list_)

1 个答案:

答案 0 :(得分:1)

try块内的所有内容都将逐行执行,如果发生异常,它将停止执行并跳转到except块。所以我稍微改变了你的代码,如果在执行public class DrawView extends View { Paint paint; Path path; public DrawView(Context context) { super(context); init(); } public DrawView(Context context, AttributeSet attrs) { super(context, attrs); init(); } public DrawView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(); } private void init() { paint = new Paint(); paint.setStyle(Paint.Style.STROKE); } @Override protected void onDraw(Canvas canvas) { int x = getWidth() / 2; int y = getHeight() / 2; path = new Path(); paint.setColor(Color.RED); paint.setStrokeWidth(20); paint.setStyle(Paint.Style.FILL); paint.setShader(new LinearGradient(getWidth(), getHeight(), getWidth(), getHeight(), Color.BLACK, Color.WHITE, Shader.TileMode.REPEAT)); // right panel path.moveTo(x, y); path.cubicTo(x + 200, y + 10, x + 20, y + 400, getWidth(), y + 400); //canvas.drawPath(path, paint); path.lineTo(getWidth(), y + 400 + 100); path.lineTo(0, y + 400 + 100); path.lineTo(0, y + 400); //canvas.drawPath(path, paint); // left panel //path.moveTo(x, y); path.cubicTo(x, y + 400, x - 200, y + 20 , x, y); canvas.drawPath(path, paint); canvas.drawPath(path, paint); } } 的行上有异常,它就不会执行try块中的其余行。此处的文档介绍了try Python Try Catch

Staff_ = parsed_file.loc["Staff" : "Total Staff"].copy()