如何在循环内将数据框追加到现有数据框

时间:2019-01-03 23:25:52

标签: python pandas dataframe append

我在python中制作了一个名为middle_dataframe的简单DataFrame,它看起来像这样,只有一行数据: display of the existing dataframe 我想将每次循环生成的新数据框附加到此现有数据框。这是我的程序:

    k = 2
    for k in range(2, 32021):
        header = whole_seq_data[k]
        if header.startswith('>'):
            id_name = get_ucsc_ids(header)
            (chromosome, start_p, end_p) = get_chr_coordinates_from_string(header)
        if whole_seq_data[k + 1].startswith('[ATGC]'):
            seq = whole_seq_data[k + 1]
        df_temp = pd.DataFrame(
            {
                "ucsc_id":[id_name],
                "chromosome":[chromosome],
                "start_position":[start_p],
                "end_position":[end_p],
                "whole_sequence":[seq]
            }
        )
        middle_dataframe.append(df_temp)
        k = k + 2

我在for循环中的迭代似乎很好,并且在使用正则表达式后检查了存储正确值的变量。但是middle_dataframe没有任何变化。而且我不知道为什么。

1 个答案:

答案 0 :(得分:0)

DataFrame.append方法返回附加的结果,而不是就地附加(link to the official docs on append)。解决方法应该是替换以下行:

        middle_dataframe.append(df_temp)

与此:

    middle_dataframe = middle_dataframe.append(df_temp)

根据数据的处理方式,您可能还需要传入参数ignore_index=True

文档警告说,一次将一行添加到DataFrame可能比构建python列表并将其立即全部转换成DataFrame的计算量更大。如果您当前的方法最终因您的目的而变得太慢,那就需要调查一下。