不是在数据帧Python中随机选择单词

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

我正在尝试创建一个stroop测试。 stroop测试是一种认知测试,其中一个单词被赋予单词是一种颜色,但单词的墨水每次都会改变。例如,我们可以用墨水红色表示BLEU,在这种情况下它是非一致的,因为单词BLEU(蓝色)与墨水不同。

参与者需要说出墨水的颜色,而不是单词。因此,如果写的单词与墨水不同,则更难回答。

每当有新参与者进来时,我想要一个新的单词/墨水序列。

所以,我创建了这段代码:

import pandas as pd
import numpy as np
import random

word = ['bleu', 'rouge', 'vert', 'jaune']

ink = ['blue', 'red', 'green', 'yellow']

my_list_word = [random.choice(word) for _ in range(60)]

df = pd.DataFrame(my_list_word, columns=["word"])

my_list_ink = [random.choice(ink) for _ in range(60)]

df['ink'] = my_list_ink

df['response'] = df['ink']

df['response'] = df['response'].replace(['red'], 'rouge.jpg')
df['response'] = df['response'].replace(['yellow'], 'jaune.jpg')
df['response'] = df['response'].replace(['blue'], 'bleu.jpg')
df['response'] = df['response'].replace(['green'], 'vert.jpg')

di = dict(zip(word, ink))
df['congruent'] = (df['word'].map(di) == df['ink']).astype(int)

print df.head(5)

df(头):

    word     ink   response  congruent
0   vert    blue   bleu.jpg          0
1   bleu    blue   bleu.jpg          1
2  rouge    blue   bleu.jpg          0
3  jaune     red  rouge.jpg          0
4   vert  yellow  jaune.jpg          0

我的问题:我需要有50%的时间是一致的问题。你有关于如何做到这一点的想法吗?我不明白如何为条件链接两列。也许,我可以翻译法语单词,所以它会是同一个单词,更容易比较。最后,我将它翻译为我的实验?

谢谢你的帮助!

python database random
1个回答
0
投票

这是一个示例,显示了使用random.choices(python 3.6)的可能方法;它使用ANSI colors来说明输出;它在macintosh和linux上工作,但你可能需要一个库(colorama?)在Windows上。

import random

def get_color(color):
    """return a congruent color 50% of the time, a random color 
       taken from the rest of the colors otherwise
    """
    colors_set = set(colors)
    colors_set.remove(color)
    bag = [color]
    probabilities = [0.5]
    for c in colors_set:
        bag.append(c)
        probabilities.append(0.5 / 3)
    return colors[random.choices(bag, probabilities)[0]]

colors = {'blue': '\x1b[1;34m', 'red': '\x1b[1;31m', 'yellow': '\x1b[1;33m', 'green': '\x1b[1;32m'}
words = {'bleu': 'blue', 'rouge': 'red', 'jaune': 'yellow', 'vert': 'green'}
reset = '\x1b[0m'

for word in words:
    print(get_color(words[word]) + word + reset)

您可以使用一组要显示的图像替换上面使用的ANSI机制来说明。

© www.soinside.com 2019 - 2024. All rights reserved.