#python #pandas #dataframe
Вопрос:
Я пытаюсь проанализировать имеющийся у меня набор данных, который выглядит следующим образом:
PRESSEDKEY PALABRA COLOR KEYCORR RT
V HORNO blue a 198
В принципе, мне нужно проверить, соответствует ли нажатая клавиша правильной клавише (правильная клавиша в нижнем регистре, но это не имеет значения). Итак, здесь нажата клавиша V вместо A, поэтому результат неверен. Возможны следующие варианты: A, V и R.
Мне также нужно увидеть разницу во времени реакции между правильным и неправильным временем, как только я его получу.
Как мне это удается сделать?
Я думал об этом, но это не работает и может быть слишком усердно, чтобы пытаться использовать каждый ключ, если только это не единственный способ сделать это:
pressed_key = filtered_data['PRESSEDKEY']
keycorr = filtered_data['KEYCORR']
def correctV(pressed_key, keycorr):
if pressed_key.str.contains('V'):
if keycorr.str.contains('v'):
print('Correct')
else:
print('Incorrect')
Комментарии:
1. Ты пробовал с
pressed_key.lower() == keycorr.lower()
этим ?2. @FrancoMorero, который возвращает ошибку атрибута: объект «Серия» не имеет атрибута «ниже»
3. Пожалуйста, ознакомьтесь с учебными пособиями по ПАНДАМ. Они покажут вам, как сравнивать столбцы-и, возможно, даже более важно, как это делать в целом-операция с столбцами.
Ответ №1:
Один из способов, которым вы могли бы это сделать, — создать столбец, в котором будет показано, равно ли нажатие клавиши KEYCORR, а затем получить среднее значение RT (время реакции) для каждой группы:
# Assign Y/N
df.loc[df['PRESSEDKEY'].str.lower() == df['KEYCORR'],'correct'] ='Y'
df.fillna('N',inplace=True)
# Compare RT
df.groupby('correct')['RT'].mean()
>>> df
PRESSEDKEY PALABRA COLOR KEYCORR RT correct
0 V HORNO blue a 198 N
1 R HORNO blue r 231 Y
2 A HORNO blue a 325 Y
3 V HORNO blue v 111 Y
4 V HORNO blue a 231 N
5 R HORNO blue r 213 Y
6 A HORNO blue v 251 N
7 V HORNO blue a 198 N
>>> df.groupby('correct')['RT'].mean()
correct
N 219.5
Y 220.0
Name: RT, dtype: float64
Комментарии:
1. Спасибо за ответ, это было очень полезно. Однако, когда я пытаюсь понять значение, оно говорит «pandas.core.base. Ошибка данных: Нет числовых типов для агрегирования», как я могу это исправить, поскольку «правильно» не является числовым?
2. Добро пожаловать. Похоже, что ваш столбец RT не является числовым. Сначала попробуйте преобразовать его в числовое значение и дайте мне знать, если ошибка повторится. проверьте эту ссылку.
3. Спасибо вам за помощь! Сначала мне пришлось его преобразовать, так что теперь он работает.