Преобразование фрейма данных с несколькими столбцами в словарь на Python

#python #dataframe #dictionary

#python #фрейм данных #словарь

Вопрос:

Фрейм данных состоит из трех столбцов.

      Month    Machine  Number of Machine
    January  Machine 1                  1
  February   Machine 2                  1
  February   Machine 3                  1
      March  Machine 2                  2
      April  Machine 4                  1
        May  Machine 1                  1
       June  Machine 3                  1

 

Я хочу поместить в словарь в этом формате, но я не уверен, как это сделать.

{(‘Январь’, ‘Машина 1’): 1, (‘Февраль’, ‘Машина 2’): 1, (‘Февраль’, ‘Машина 3’): 1, (‘Март’, ‘Машина 2’): 1, (‘Апрель’, ‘Машина4’): 1, (‘Май’, ‘Машина 1’): 1, (‘Январь’, ‘Машина 3’): 1}

Обратите внимание, что есть дублирование месяца.

Ответ №1:

Вы можете установить индекс для пары 'Month','Machine' , а затем использовать метод to_dict .

 df.set_index(['Month','Machine']).to_dict()['Number of Machine']
 

Ответ №2:

Вы можете сделать это следующим образом:

 my_dict = {tuple(i[:-1]): i[-1] for i in data}
 

Ответ №3:

Вы можете сделать это итеративно, используя цикл

 import pandas as pd
import numpy as np
from collections import defaultdict

def gen_dict(in_df):
    refHash = defaultdict()
    
    for row in in_df.values:
        key = tuple(row[:-1])
        refHash[key] = row[-1]
        
    return refHash

hash_map = gen_dict(in_df)
 

Другим способом было бы использовать index

 df_dict = df.set_index(['Month','Machine']).to_dict()['Number of Machine']