Easiest/safest 在 pandas 中将信息逐个单元传递到数据帧的方法?

Easiest/safest way to pass information cell by cell to a dataframe in pandas?

我有一个很长的算法一直在研究,我想把它 运行 搁置几天。我想将结果和其他变量保存到每个循环的数据框中,然后将它们传递到 csv 或 xlsx 文件。例如,在这个循环中:

import random
import pandas as pd
import datetime as dt

for attempt in range(3):
    if attempt==0:
        string_class = 'First Class'
    else:
        string_class = 'Other Class'
    executing_alg = True
    while executing_alg:
        time_tst = dt.now()
        time.sleep(0.2)
        result_1 = random.random()
        result_2 = random.random()
        if result_1 > result_2:
            executing_alg=False

我想保存变量 time_tstresult_1result_2string_class。因此,我希望有一个数据框,其中填充了每次循环执行中的这些变量。预期结果:

Time Result_1 Result_2 Class
2022-05-16 02:35:11.069372 0.6570918119177281 0.043825063850461254 First Class
2022-05-16 02:35:11.479732 0.26843513214552006 0.010366867417694214 Other Class
2022-05-16 02:35:11.682106 0.9087965555346139 0.7634101174048724 Other Class

我想到的是制作一个包含结果的列表,然后将它们附加到数据框中的系列...但我想有更简单快捷的方法吗?...感谢您的任何建议.. .

这将为每个循环在文件中写入一个 CSV 格式的新行。您稍后可以使用 pandas 轻松阅读此内容,但没有理由使用 pandas 来执行此操作。

import random
import datetime as dt

with open('datafile.csv', 'a') as f:
    for attempt in range(3):
        if attempt==0:
            string_class = 'First Class'
        else:
            string_class = 'Other Class'
        executing_alg = True
        while executing_alg:
            time_tst = dt.now()
            time.sleep(0.2)
            result_1 = random.random()
            result_2 = random.random()
            if result_1 > result_2:
                executing_alg=False
        """
        It's not clear whether or not this next line
        should in inside your while loop or not.
        ...Adjust as needed:
        """
        f.write(f'{time_tst},{result_1},{result_2},{string_class}')
        f.write('\n')