从现有Dataframe python pandas中拉出新Dataframe的行

时间:2017-06-15 20:21:37

标签: python pandas dataframe

如果行匹配某些外部条件,正在寻找一种方便的方法将数据帧的某些行存储到新的数据帧中。

我有一个数据框(df),其中包含我针对内部数据库运行的记录。有时查询有效,有时它不起作用。我希望存储导致异常的行。新数据框应具有与原始数据帧相同的结构。我整个上午都在测试不同的解决方案,但似乎没有什么工作。我当前的代码看起来像这样:

    cols=['recordID','linkID','date']
    dfNew = pd.DataFrame(columns = cols)    

    for index, row in df.iterrows():
        try:
            updateStatement = """
            EXEC dbo.storedProc
                @recordID = {0},
                @linkID = {1},
                @date = '{2}',
            """.format(row.recordID, row.LinkID, row.date)       
            cursor.execute(updateStatement)

        except Exception as e:
            lst = ({'recordID':row.recordID,'linkID':row.linkID,'date':row.date})
            dfexcept = dfexcept.append(lst, ignore_index=True)

在我目前的情况下,它为我提供了一个包含值的表格(例如' print()'和' len()'返回预期结果)但功能特定到Dataframes(merge(),. head())不起作用,当被要求返回' dfexcept'它说空了DataFrame'。

所以,简而言之,我知道有些事情是错的,但不是什么。我试图存储抛出异常的行,但我怀疑我构建DataFrame的方式给了我一些问题(我认为构建字典列表很奇怪,但它让我最接近所需的行为和在别处建议。)

如何将行存储到新的DataFrame中(通常)?在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您可以使用切片技术,您可以在其中切片所需的行并将其放入另一个数据帧中。语法如下所示

Df_new = Df_old.iloc ['starting_name_of_row':'ending_name_of_row']