2017-12-05 14 views
0

したがって、既存の.csvファイルをループしてストロープタスクをコーディングしようとしています。これを行うには、stimuli.csvファイルをデータフレームに読み込みます。パンダのデータフレームをループして特定の値を列に表示しようとしています

.csvファイルは次のように構成されています

Colours Congruent Word 
0 red  0  blue 
1 red  1  red 
2 red  0  green 
3 blue  1  blue 

私はその後、「色」列と「言葉」列の値をチェックするデータフレームをループしてみてください。色は単語のフォントとして表示されるので、対応するカラーフォントを適切に表示するには、[色]列のインデックス値をチェックします。表示される単語は、「Word」列に索引付けされた値でなければなりません。私は取得しています:

KeyError例外:0

を私はオンライン見てきたが、具体的な例は、私を助けていません。私はこのすべてが間違っているかどうか誰にでも教えてもらえますか?

import pygame 
import sys 
import psychopy 
import os 
import csv 
import pandas as pd 
pygame.init() 
screen = pygame.display.set_mode((1000, 500)) 
screen.fill((0, 0, 0)) 
myfont= pygame.font.SysFont("Calibri", 30) 
blue= (0,0,255) 
green= (0,255,0) 
red= (255,0,0) 
while 1: 
    file= r'stimuli.csv' 
    df= pd.read_csv('%s' %file, delimiter=',', encoding="utf-8-sig") 
    word= df['Word']     
    congruent= df['Congruent'] 
    colour= df['Colours'] 
    for index, row in df.iterrows(): 
     word= df[index].iloc['Word']     
     congruent= df[index].iloc['Congruent'] 
     colour= df[index].iloc['Colours'] 
     if df.iloc[index].iloc['Colours']== 'red': 
      stim= myfont.render('%s' %word, 1, (255,0,0)) 
      screen.blit(stim, (300,300)) 
      pygame.display.flip() 
     if df.iloc[index].iloc['Colours']== 'green': 
      stim= myfont.render('%s' %word, 1, (0,255,0)) 
      screen.blit(stim, (300,300)) 
      pygame.display.flip() 
     if df.iloc[index].iloc['Colours']== 'blue': 
      stim= myfont.render('%s' %word, 1, (0,0,255)) 
      screen.blit(stim, (300,300)) 
      pygame.display.flip() 

    for event in pygame.event.get(): 
     if event.type == pygame.KEYDOWN: 
      if event.key== pygame.K_ESCAPE: 
       msg2= myfont.render("Exiting now", 1, (0, 255, 0)) 
       screen.blit(msg2, (300, 300)) 
       pygame.display.flip() 

       pygame.display.quit() 
pygame.quit() 
+0

'dfの[インデックス] .iloc [ '色']'間違っている+ 2行以上、 '色= df.loc [インデックス、 '色を']試す' –

+0

は 'でそれをしません真の時は - ファイルを読み込んで、1秒間に何百回もすべてのデータを生成するようになりました。そして、全ての変更の後に 'flip()'を使わないでください - 全てのループで一度だけ行います。 BTW:pandasはデフォルトでmatplotlibを使用しています - あなたはmatplotlibでそれをやることができると思います。 – furas

答えて

0

コードを小さくするためにこの例をご覧ください。これを使用してコードを更新し、物を読みやすくします。

df = pd.DataFrame(dict(Colours=['Red','Blue'])) 

d_colour = dict(Red=(255,0,0),Green=(0,255,0),Blue=(0,0,255)) 

for index, row in df.iterrows(): 
    colour= df.loc[index,'Colours'] 
    colour_code = d_colour.get(colour) 
    print(colour_code) 
    #stim= myfont.render('%s' %word, 1, colour_code) 
    #screen.blit(stim, (300,300)) 
    #pygame.display.flip() 
+0

興味深い。だから私は潜在的にWordで同じことをやっても間に合うだろうか? – wutevs00

+0

それはcsvファイルから来る必要があります。作成している辞書からデータフレームを作成しているだけです。 – wutevs00

+0

@ wutevs00はい私は知っています。私はそれを行うので、ここでコードを試すことができます。あなたが質問を投稿するときは、常にデータを投稿することをお勧めします。 –

関連する問題