如何从循环列表中弹出随机项目

问题描述 投票:0回答:1

我有一个包含实验参数的文件,其中每行都是不同的试验,每列都是实验的单独参数,以便在每次试验中选择不同的参数组合,例如声音和文本,例如。 “声音”:蓝色,“文本”:红色等

这些参数存储在 csv 中并使用 pandas 打开:

parameters = pd.read_csv('Parameters.csv')
Sound_list = parameters['Sound']
Text_list = parameters['Text']

for 循环正在 Psychopy 中迭代实验循环(不是参数列表本身),但即使使用以下内容我也无法让它工作。

for i in range(0,10):
    n = range(0,len(Sound_list),1)
    index = random.choice(n)
    Sound_to_play = Sound_list.pop(index)
    Text_to_show = Text_list.pop(index)

我试图从列表中弹出每个试验,以便每个组合显示相同的次数,但是我收到以下错误:

 Traceback (most recent call last):

  File "<ipython-input-4-9fe2444288e3>", line 4, in <module>
    Sound_to_play = Sound_list.pop(index)

  File "/opt/anaconda3/lib/python3.7/site-packages/pandas/core/generic.py", line 790, in pop
    result = self[item]

  File "/opt/anaconda3/lib/python3.7/site-packages/pandas/core/series.py", line 871, in __getitem__
    result = self.index.get_value(self, key)

  File "/opt/anaconda3/lib/python3.7/site-packages/pandas/core/indexes/base.py", line 4405, in get_value
    return self._engine.get_value(s, k, tz=getattr(series.dtype, "tz", None))

  File "pandas/_libs/index.pyx", line 80, in pandas._libs.index.IndexEngine.get_value

  File "pandas/_libs/index.pyx", line 90, in pandas._libs.index.IndexEngine.get_value

  File "pandas/_libs/index.pyx", line 138, in pandas._libs.index.IndexEngine.get_loc

  File "pandas/_libs/hashtable_class_helper.pxi", line 997, in pandas._libs.hashtable.Int64HashTable.get_item

  File "pandas/_libs/hashtable_class_helper.pxi", line 1004, in pandas._libs.hashtable.Int64HashTable.get_item

KeyError: 0

有人知道如何解决这个问题吗?谢谢!

python pandas loops indexing
1个回答
0
投票

如上所述,您没有列表。您必须考虑的第二件事是:

random.choice(n)

采用 seq 作为输入参数。所以在这种情况下你可以写:

parameters = pd.read_csv('Parameters.csv')
Sound_list = [n for n in parameters['Sound'].values]
Text_list = [n for n in parameters['Text'].values]

然后运行循环:

for i in range(0,10):
    index = random.choice(Sound_list)
    Sound_to_play = Sound_list.pop(index)
    Text_to_show = Text_list.pop(index)
© www.soinside.com 2019 - 2024. All rights reserved.