2014-05-21 141 views
0

我正在使用使用Python代码的PsychoPy创建一个神经心理学任务。 我正在创建一个GoNoGo任务,并有一个刺激列表(正面,负面和中性词)。我有一定数量的块(18),单词的目标和分心词的价格在每个块内都是固定的(即块1 =目标:正面,分心:中性等)。在每个块中,有8个目标词和8个干扰词以随机顺序出现(没有替换)。因此,我想让psychopy从每个区块的相关目标(8个字)和distractor(8个字)的相关价中随机选择16个字。编辑python代码的建议

我没有经验的代码,但想知道是否有人能够帮助我这个特定的。

为了让精神病患者随机选择每个单词的单词,我想要一个代码,要求psychopy从特定位置读取excel文件,随机随机混合文件中某一列中的单词,将所有这些单词分开在该列中分成8个字的块,然后重复这18次,最后将这些新的8个字的块写入新文件。

我想要一个代码,要求程序从特定位置读取一个excel文件,随机随机混合文件中某一列的单词,将该列中的所有单词分成8个单词块,然后重复这18次,最后将这8个单词的新块写入一个新文件。

这是我到目前为止的代码:

file.read(pathnameOfExcelFile.xlsx) 
List=[excel column name] 
Random.shuffle(list) 
NewList=(List) #8words to be randomly chosen fromlist for this new list 
NewList.remove(random.shuffle) 
#to remove the word once randomised 
NewList([18]*repetitions) 
#repeat sequence above 18 times 
file.write(newfilename.xlsx) 

这是否有意义?有人会知道如何帮助我吗?

任何帮助将不胜感激!

谢谢凯特

回答

1

我认为你有正确的想法。

要读取excel文件,您可以使用python软件包Pandas。

import pandas as pd 
import random 

data = pd.read_excel('file.xlsx','Sheet1') #Sheet1 name of the file 
words = data['column_of_interest'].values #Select column containing words 

random.shuffle(words) 

一旦你的列表中,如果洗牌,我觉得你可以乘坐8路第一要素,然后再8,...

cpt = 0 
chunks = {} 
chunk = [] 
for e in range(len(list)): 
    chunk.append(list[e]) 
    if len(chunk) == 8: 
     chunks[cpt] = chunk 
     cpt += 1 
     chunk = [] 
if chunk != []: 
    chunks[cpt] = chunk # the last elements 

你现在有大块的字典。 您可以重复这样的(写在环路的新文件):

for i in chunks: 
    chunk = chunks[i] 
+0

如果cpt == 18,您可以通过在for语句中添加一个中断来限制为cpt 18 – DavidK

0

这应该让你开始:

import xlrd 
import random 
workbook = xlrd.open_workbook('test.xlsx') # open excel file 

worksheet = workbook.sheet_by_name('Sheet1') 

words= [ str(x) for x in worksheet.col_values(colx=1) if x] # words in column 1 

random.shuffle(words) 

newList = [random.choice(words) for i in range(8) ] #8words to be randomly chosen fromlist for this new list 

你需要看看一些XLS读者和作家xlswriterxlrd