对我来说,收集模拟结果的最佳方法是什么? 每个数据帧写入一个csv文件使用yaml / json 使用数据库

问题描述

我有一个仿真模型,该模型返回一个数据帧,其中包含有关代理的计费行为的信息:

   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数据库。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...