【问题标题】:How can I export multiple pandas dataframe into one .csv file?如何将多个 pandas 数据框导出到一个 .csv 文件中?
【发布时间】:2017-10-27 17:16:40
【问题描述】:

我写了一段代码,可以读取一个 .fasta 文件,分析单个基因序列,根据所述序列进行计算,然后将计算结果组织到单个 pandas 数据框中,随后将其导出为.csv 文件。

我最近更新了代码,以便它解析一个包含多个序列的 .fasta 文件,虽然我知道如何去做,但当前形式的代码会为每个序列导出一个 .csv 文件。当 .fasta 文件包含许多序列(例如,超过 100 个)时,必须对如此多的 .csv 文件进行排序可能会有些费力。

因此,我尝试将每个 pandas 数据框导出到单个 .csv 文件中。但是,我不确定如何设置代码才能发生这种情况。现在,代码基于一个 for 循环,该循环遍历 dict 的值(存储 .fasta 文件中的序列)。在每次迭代中,都会调用一个函数来创建一个包含相关计算结果的 dict,然后调用另一个函数来创建 pandas 数据帧并用 dict 中的信息填充它,然后将其导出为 .csv 文件。

import pandas as pd
from os import path

for seq in seq_dict.keys():
    result_dict= calculator_func(seq_dict[seq])
    results_df= data_assembler(result_dict)
    results_df.to_csv(path.join(output_dir, "{}_dataframe.csv".format(project_name)

还应该注意的是,数据帧的索引都是基于相关序列中的数字位置。

在任何情况下,我都很难弄清楚我应该如何将所有数据帧合并到一个 .csv 文件中,以便索引使用户能够告诉 a。该行来自哪个序列,b。该行所基于的序列中的哪个位置。有人可以推荐我一种方法吗?

【问题讨论】:

    标签: python-2.7 pandas csv


    【解决方案1】:

    您可以将索引设置为您想要的任何内容,包括字符串。试试这个例子:

    import pandas as pd
    
    test_frame = pd.DataFrame({"Sequence":[1,2],"Position":[3,4]})
    test_frame.index = "Sequence:" + test_frame['Sequence'].astype(str) + "_" + "Position:" + test_frame['Position'].astype(str)
    test_frame
    

    【讨论】:

    • 我知道您可以将数据帧上的索引设置为您想要的任何值,但是如何将 for 循环生成的所有数据帧导出到一个 .csv 文件中?我应该在循环之前创建一个空数据框,然后用每个 for 循环填充它吗?那么我应该如何构建索引呢?如果您需要告诉我我的函数的结构是什么,请告诉我。
    • 所有数据框的列名都相同吗?分配新索引后,您可以附加到一个巨大的主数据帧或将它们连接到一个主数据帧并导出。例如:master_frame = test_frame1 后跟:master_frame = master_frame.append(test_frame2) pandas.pydata.org/pandas-docs/stable/merging.html
    • 我最终通过在 for 循环之前创建一个空列表来合并数据框,将每个构建的数据框附加到列表中,然后使用 final_dataframe = pd.concat(total_list_of_dfs) 制作最终的数据框。感谢您的帮助!
    • 太棒了,希望对我有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-22
    • 1970-01-01
    • 2015-12-05
    • 2017-04-24
    • 2021-05-29
    • 1970-01-01
    相关资源
    最近更新 更多