如何使用生成器函数一次从 csv 文件中检索一行
How to retrieve one row at a time from the csv file using generator functions
我需要从 CSV 文件中取出一行作为观察元组用于强化学习 class 环境。我首先使用了生成器函数,它不会检索任何数据,其次它会迭代地提供所有与我的问题要求不匹配的数据。此外,我需要当前选择的观察(CSV 行)在 class 环境中的多种方法中使用,例如在奖励函数中。
非常感谢任何有关如何执行此操作的想法或建议。谢谢
class Environment1:
def __init__(self, data, max_ticks=300):
self.data = data
self.application_latency=1342
self.reward = 0
#self.done = False
self.MAX_TICKS = max_ticks
self.episode_over = False
def step(self, act):
self.take_action(action)
reward = self.get_reward()
ob = self.get_state()
return ob, reward, self.episode_over
#return ob, reward, self.done # obs, reward, done
def get_state(self):
"""Get the observation. it is a tuple """
lst = [tuple(x) for x in data.values]
def gen(last):
for i in last:
print(yield i)
#observation_space= yield i
#ob = (observation_space.Edge_Latency, observation_space.Cloud_latency )
#print(ob)
#return ob
根据我从你的问题中收集到的信息,你想从你的 csv 数据创建一个观察元组生成器。具体来说,您想将每个包含 edge latency
和 cloud latency
列的元组传递给另一个函数。我已经编写了一些示例代码,这些代码将为您的数据的每一行创建一个元组列表。
import pandas as pd
import numpy as np
def createGenerator(self):
obs_data = [tuple(x) for x in self.data[['Edge_Latency', 'Cloud_latency']].to_numpy()]
for obs in obs_data:
yield obs
我需要从 CSV 文件中取出一行作为观察元组用于强化学习 class 环境。我首先使用了生成器函数,它不会检索任何数据,其次它会迭代地提供所有与我的问题要求不匹配的数据。此外,我需要当前选择的观察(CSV 行)在 class 环境中的多种方法中使用,例如在奖励函数中。
非常感谢任何有关如何执行此操作的想法或建议。谢谢
class Environment1:
def __init__(self, data, max_ticks=300):
self.data = data
self.application_latency=1342
self.reward = 0
#self.done = False
self.MAX_TICKS = max_ticks
self.episode_over = False
def step(self, act):
self.take_action(action)
reward = self.get_reward()
ob = self.get_state()
return ob, reward, self.episode_over
#return ob, reward, self.done # obs, reward, done
def get_state(self):
"""Get the observation. it is a tuple """
lst = [tuple(x) for x in data.values]
def gen(last):
for i in last:
print(yield i)
#observation_space= yield i
#ob = (observation_space.Edge_Latency, observation_space.Cloud_latency )
#print(ob)
#return ob
根据我从你的问题中收集到的信息,你想从你的 csv 数据创建一个观察元组生成器。具体来说,您想将每个包含 edge latency
和 cloud latency
列的元组传递给另一个函数。我已经编写了一些示例代码,这些代码将为您的数据的每一行创建一个元组列表。
import pandas as pd
import numpy as np
def createGenerator(self):
obs_data = [tuple(x) for x in self.data[['Edge_Latency', 'Cloud_latency']].to_numpy()]
for obs in obs_data:
yield obs