Pandas to_csv 只保存我脚本最后 运行 的数据。我怎样才能创建一个大的 table 来保存我所有的模拟?

Pandas to_csv only saves the data from the last run of my script. How can I create a large table to save all my simulations?

我是 python 的新手。我目前正在尝试对我的模拟进行多次 运行,这样我就可以看到我的数据与每个 运行 的数据有何不同。我目前 运行 从我的模型 class 中使用这段代码来创建我的文件和数据框,包括字典。时代只是每次模拟中的日子:

def setup_model(num_epochs):

     model = Model(epochs=num_epochs)

     model.output["student_stats"] = {
        "healthy": [],
        "infectious": [],
        "absent": [],
        "recovered": []
     }
     student_stats = model.output["student_stats"]

这是我设置 pd 数据框的代码:

df = pd.DataFrame(student_stats)
df.to_csv("file_name.csv", header=True)

我从 Launcher.py 启动我的模拟并导入 setup_model 方法。下面是我的代码 Launcher.py:

from Model import setup_model

for i in range(5):

    setup_model(30)

当我 运行 我的模拟虽然我只得到一个 运行 的输出(每个模拟有 30 天),我希望从 5 运行 中得到输出模拟。这是我当前输出的示例:

,healthy,infectious,absent,recovered
0,125,1,0,0
1,124,2,0,0
2,123,2,1,0
3,122,2,2,0
4,121,2,3,0
5,120,2,3,1
6,119,2,3,2
7,119,1,3,3
8,119,0,3,4
9,119,0,2,5
10,118,1,1,6
11,118,1,0,7
12,118,0,1,7
13,118,0,1,7
14,118,0,1,7
15,118,0,0,8
16,118,0,0,8
17,118,0,0,8
18,118,0,0,8
19,118,0,0,8
20,118,0,0,8
21,118,0,0,8
22,118,0,0,8
23,118,0,0,8
24,118,0,0,8
25,118,0,0,8
26,118,0,0,8
27,118,0,0,8
28,118,0,0,8
29,117,1,0,8

它只保存最后 运行 的数据,我不知道如何让它保存所有 运行。

to_csv 默认模式是 w 至于“写”。这意味着它每次执行此操作时都会覆盖文件夹中的文件名“file_name.csv”。所以只会保存最后的结果。

两个选项:

  1. 每次保存不同的文件。例如,将 i 发送到 setup_model,然后将文件另存为 "file_name"+i+".csv"。然后你将为每个时期都有单独的文件。
  2. 使用附加模式:df.to_csv("file_name.csv", mode="a", header=True)。这会将当前数据帧附加到 file_name.csv 中的任何内容。它不会覆盖它。您将拥有一个包含所有结果的文件,但将每个时期分开可能不方便。

选择您认为更方便的选项。