В pandas я хотел бы заменить значения столбца в df значениями, найденными в соответствующем словаре

#pandas

Вопрос:

Заранее спасибо.

Я прочитал исходный csv-файл и сузил файл до фрейма данных с 35 столбцами. Один из столбцов состоит из целых чисел, которые функционируют как ключи в другом словаре. Я прочитал в этом словаре, вручную вытащив его из файла excel и сохранив в виде собственного csv, в котором я прочитал. В настоящее время ключи являются индексом, но я могу это изменить.

примечания: -2 = Не применимо, -1 = Не сообщается, 22-первое значение, такие значения, как 23, 25, 26, 29, 31, 32, и так далее пропало без вести.

Ответ №1:

Вы можете использовать панд.Серия.метод отображения. Мы предполагаем, что у вас есть словарь python с категориями, например:

 categories = {
    -1: 'Not aplicable',
    -2: 'Not reported',
    -3: 'Another category',
     ...
     63: 'Value 63'
}

#Sample data
your_dataframe = pd.DataFrame(columns=['Name', 'Fullname', 'key'], data=[["John","Dow",-1], ["Someone","ELse",-2]])

# Now you can use map method on the `key` you want mapping
your_dataframe['key'] = your_dataframe['key'].map(categories)
your_dataframe
 

Выход:

      Name   Fullname    key
0   John    Dow     Not aplicable
1   Someone ELse    Not reported
 

Ответ №2:

Если количество клавиш достаточно мало, я бы предложил создать такую функцию, как:

 def categorizer(row):
    if row == -2:
        return 'Not applicable'
    elif row == -1:
        return 'Not reported'
    ...
    else:
        return 'Key'

df['key'] = df['key'].apply(categorizer)

 

Комментарии:

1. Существует 63 значения.