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_tst
、result_1
、result_2
和 string_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')
我有一个很长的算法一直在研究,我想把它 运行 搁置几天。我想将结果和其他变量保存到每个循环的数据框中,然后将它们传递到 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_tst
、result_1
、result_2
和 string_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')