Pandas DataFrame to Dictionary с кортежами в качестве ключа и значений - PullRequest
0 голосов
/ 05 июля 2018

Мне нужна помощь, чтобы сделать следующее:

У меня есть CSV-файл, как показано ниже, загруженный в фрейм данных 'df'. Существует несколько областей, различные значения для памяти, виртуальных ЦП и хранилища, соответствующих каждому «имени». В этом фрейме данных 1700 строк.

The dataframe with the CSV values loaded in

Мне нужно создать словарь, который имеет следующее:

Ключ - это кортеж с двумя элементами: Имя и Регион

Значение словаря является кортежем: стоимость Windows по требованию и стоимость Linux по требованию

В конечном итоге я хочу создать программу, которая выполняет следующие действия: Пользователь вводит определенный ЦП и ОЗУ и Хранилище, и программа будет сортировать данные и извлекать Имя, а также цены Windows и Linux для этого процессора, если есть совпадение, или если нет, потянет процессор ближе всего к введенные значения. Спасибо!

Name    Region  API Memory  vCPUs   Storage Linux   Windows
0   M1 General Purpose Small    US West - NorCal    m1.small    1.7 GiB 1 vCPUs 160 GiB $0.047000 hourly    $0.078000 hourly
1   M1 General Purpose Medium   US West - NorCal    m1.medium   3.75 GiB    1 vCPUs 410 GiB $0.095000 hourly    $0.157000 hourly
2   M1 General Purpose Large    US West - NorCal    m1.large    7.5 GiB 2 vCPUs 840 GiB $0.190000 hourly    $0.314000 hourly
3   M1 General Purpose Extra Large  US West - NorCal    m1.xlarge   15.0 GiB    4 vCPUs 1680 GiB    $0.379000 hourly    $0.627000 hourly
4   C1 High-CPU Medium  US West - NorCal    c1.medium   1.7 GiB 2 vCPUs 350 GiB $0.148000 hourly    $0.228000 hourly

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Я бы попробовал что-то вроде этого:

outdict = {k: (gdf['Windows On Demand cost'].item(), 
               gdf['Linux On Demand cost'].item())
           for k, gdf in df.groupby(['Name', 'Region'])}
0 голосов
/ 05 июля 2018

Вот часть, которая создает словарь

tempDict = {}

for i in df.index:

    key = (df.at[i, 'Name'] ,df.at[i, 'Region']) #Rename columns accordingly
    value = (df.at[i, 'Windows On-demand cost'] ,df.at[i, 'Linux On demand cost']) #Rename columns accordingly

    dictionary = {key: value}
    tempDict.update(dictionary)

print(tempDict)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...