2017-12-05 3 views
0

그래서 기존의 .csv 파일을 반복하여 스트로프 작업을 코딩하려고합니다. 이를 위해 stimuli.csv 파일을 데이터 프레임으로 읽습니다.팬더 데이터 프레임을 반복하고 특정 값을 열에 표시하려고합니다.

.CSV 파일은 다음과 같이 구성되어 있습니다 : 나는 다음 '색상'칼럼 '단어'열에서 값을 검사 dataframe을 통해 루프를 시도

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

'안양 [인덱스] .iloc [ '색상']'잘못 + 위의 두 행은, –

+0

는'그것을하지 않는다'색 = df.loc [인덱스, '색상'] '시도 True '는 이제 파일을 읽고 모든 데이터를 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 예. 알고 있습니다. 그렇게하면 여기에서 코드를 사용해 볼 수 있습니다. 질문을 게시 할 때 항상 확인할 수있는 데이터를 게시하는 것이 좋습니다. –

관련 문제