首页 > 解决方案 > 将多个值存储到字典中

问题描述

我是 python 新手,在字典中遇到困难。我正在尝试将多个值从 excel 存储到字典中。

这是我的输入:

在此处输入图像描述

我正在尝试以这种方式存储。

我的预期输出是:

d = [
{
"name":"dhdn",
"sub":["c","java","python"]
},
{
"name":"subbu",
"sub":["java","perl"]
}
]

我试过这样:

df_service = pd.read_excel(existing_excel_file, sheet_name='Sheet1')
df_service = df_service.replace(np.nan, "dummy")
print(df_service)

list1 = []

for i in range(0, len(df_service['name'])):
    dict1 = {}
    lst = []
    if df_service['name'][i] != 'dummy':        
        dict1["name"] = df_service['name'][i]
        lst.append(df_service['sub'][i])
    else:
        lst.append(df_service['sub'][i])
    dict1["sub"] = lst
    list1.append(dict1)

print(list1)

如果 excel 数据如下所示:

在此处输入图像描述

如果我们有这样的数据怎么办?如何为此创建字典?

需要一些建议,没有得到任何想法。

标签: excelpython-3.xlistdictionary

解决方案


您可以将 pandas.DataFrame.fillna 与 method='ffill' 选项一起使用。“填充”代表“前向填充”,并将向前传播最后一个有效观察。

df_service = pd.read_excel(existing_excel_file, sheet_name='Sheet1')

df_service = df_service.fillna(method='ffill')
result = [{'name':k,'sub':g["sub"].tolist()} for k,g in df_service.groupby("name")]
print (result)

输出:

[{'name': 'dhdn', 'sub': ['c', 'java', 'python']}, {'name': 'subbu', 'sub': ['java', 'perl']}]

推荐阅读