したがって、既存の.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()
'dfの[インデックス] .iloc [ '色']'間違っている+ 2行以上、 '色= df.loc [インデックス、 '色を']試す' –
は 'でそれをしません真の時は - ファイルを読み込んで、1秒間に何百回もすべてのデータを生成するようになりました。そして、全ての変更の後に 'flip()'を使わないでください - 全てのループで一度だけ行います。 BTW:pandasはデフォルトでmatplotlibを使用しています - あなたはmatplotlibでそれをやることができると思います。 – furas