Как сопоставить ответы опроса с номерами опций с помощью панд? - PullRequest
1 голос
/ 02 ноября 2019

У меня есть дата-кадр и ряд, как показано ниже

user_response = pd.DataFrame({
'val_string': ['Correct','Mute','Test13','Test15','Unverified',np.nan,'>10 Edu'],
'num':[np.nan,np.nan,1201,1203,np.nan,np.nan,np.nan]
 })

option_numbers = pd.DataFrame({
'answer':['Correct','Incorrect','mute','cannot see','paralysed','illiterate','tired','cannot hear','NIL',
          'English','Malay','Mandarin','Hokkien','Teochew','Cantonese','Other - specify','Chinese',
          '0 Edu','1-6 Edu','7-10 Edu','>10 Edu','Unreachable','Incomplete','Unverified','Complete'],
                             'option':[1,0,0,1,2,3,4,5,6,1,2,3,4,5,6,7,8,1,2,3,4,5,0,1,2]})
option_number = option_number.set_index('answer')['option']

Хотя я могу успешно отобразить на основе приведенного ниже кода для соответствующих элементов, я теряю существующие значения для non-matching элементов

user_response['num'] = user_response['val_string'].map(option_numbers)

Если вы запустите мой код, вы увидите, что он теряет значение Test13, Test15, поскольку его нет в option_numbers series и не совпадает Mute с muteиз-за чувствительности к регистру

Можете ли вы помочь мне выяснить это?

Я ожидаю, что мой вывод будет таким, как показано ниже

enter image description here

1 Ответ

2 голосов
/ 02 ноября 2019

Сначала вам нужно, чтобы оба столбца во фреймах данных были в нижнем или верхнем регистре

user_response['val_string'] = user_response['val_string'].str.lower()
option_numbers['answer'] = option_numbers['answer'].str.lower()

, затем просто используйте fillna для заполнения пропущенных значений, вы должны установить индексы в обоих данных:фреймы к правильному столбцу, чтобы это работало.

user_response = user_response.set_index('val_string')
option_numbers = option_numbers.set_index('answer')
user_response['num'] = user_response['num'].fillna(option_numbers['option'])
user_response
val_string
correct          1.0
mute             0.0
test13        1201.0
test15        1203.0
unverified       1.0
NaN              NaN
>10 edu          4.0
Name: num, dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...