#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']