Как заполнить ключи вложенного словаря, если они находятся в одной колонке Excel файла?
Как можно заполнить ключи вложенного словаря данными из excel файла, если они находятся в одной колонке, есть условное разделение, но когда пытаюсь загрузить ключи, то во вложенные ключи загружается вся колонка, а нужно, чтобы загружались ключи согласно соответствию условному разделению
Вот мой код:
import pandas as pd
from pprint import pprint
dict1 = dict()
a = pd.ExcelFile("D:/Excel_PZ_py/test.xlsx")
df = pd.read_excel(a)
df_c = df.copy()
df_c = df_c.fillna(0)
key_df_c = df_c[df_c['S'] == 0]
key_df_c = key_df_c.loc[key_df_c['name'] != 'text']
key1 = key_df_c['name'].values
for i in key1:
dict1[i] = dict()
dict_v = dict1[i]
for t in df_c['name']:
dict_v[t] = []
Вот файл excel с условным разделением:
желаемый вид словаря :
{'A': {5:[], 8:[], 9:[], 3:[], 7:[]}, 'B':{19:[], 16:[], 18:[], 15:[]}, 'C':{26:[], 22:[]}}
Upd: Ссылка на исходный файл excel: https://easyupload.io/dp6q6g
Ответы (1 шт):
Автор решения: strawdog
→ Ссылка
Возможно, я не совсем понял вопрос, но то, что я понял, можно сделать так:
import pandas as pd
df = pd.read_excel("1.xlsx").dropna(subset=["name"])
df = df[df["name"]!="text"]
df["key"] = df["name"]
df.loc[df["name"].str.isalpha()!=True, "name"] = pd.NA
df["name"] = df["name"].fillna(method="ffill")
d = df.dropna().groupby("name")["key"].apply(list).to_dict()
res = {k:[{x:[]} for x in d[k]] for k in d.keys()}
res:
{'A': [{5: []}, {8: []}, {9: []}, {3: []}, {7: []}], 'B': [{19: []}, {16: []}, {18: []}, {15: []}], 'C': [{26: []}, {22: []}]}
Update:
вероятно, автору вопроса нужен такой результат:
res1 = {k:{x:[] for x in d[k]} for k in d.keys()}
res1:
{'A': {5: [], 8: [], 9: [], 3: [], 7: []}, 'B': {19: [], 16: [], 18: [], 15: []}, 'C': {26: [], 22: []}}
