问题描述
我有一个仿真模型,该模型返回一个数据帧,其中包含有关代理的计费行为的信息:
Station kWh Timestamp
a 5 2020-01-01 09:22:07
b 10 2020-08-20 12:02:10
c 15 2020-12-10 17:31:39
然后我有一个函数,将输入n(代理数)作为输入并将每个代理的数据帧写入csv文件中。
我遇到的问题是如何对1000个代理运行模拟,可以说1000次。那将给我一百万个数据帧,并且我需要能够从每个模拟中收集结果,以便不能将其写入相同的csv文件中。 谁能推荐一个好方法来做到这一点?
解决方法
以下是一些伪代码,可能会对您有所帮助。用可重现的示例回答会更容易。
import pandas as pd
import datetime as dt
def agent_sim(name):
# do stuff ...
# create agent name column
df['agent'] = name
# create timestamp for simulation time
df['sim_timestamp'] = dt.datetime.now()
return df
# create empty dataframe
df = pd.DataFrame()
agents = ['agent a','agent b',...]
for agent in agents:
for i in range(1000):
df = df.append(agent_sim(agent))
# write simultations to csv
df.to_csv('agent_simulations.csv',index=False)
,
我不清楚您的要求是什么。
有一些可能性(如果需要,我可以提供基本代码):
每个数据帧写入一个csv文件
尽管我假设您不想根据问题的措辞来这样做,但这仍然是可能的。
使用yaml / json
使用pandas.DataFrame
的{{3}}方法,您可以将所有数据存储在一个json文件中。
您需要为每个仿真找到唯一的标识符以对数据建立索引。
使用数据库
您是否考虑过使用类似to_json的东西?这是一个轻量级的NoSQL数据库。