excel - 将多个值存储到字典中
问题描述
我是 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 数据如下所示:
如果我们有这样的数据怎么办?如何为此创建字典?
需要一些建议,没有得到任何想法。
解决方案
您可以将 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']}]
推荐阅读
- java - 在 Springboot RestController 中捕获所有请求的路径
- plot - 在 Gnuplot 中以 loglog 比例绘制时减少数据点的数量
- reactjs - JSX:使用纯字符串自动修复空字符串大括号,即 text={''} 到 text=""
- .net - 从数据库而不是配置文件中读取 NLog 配置
- javascript - 在动态更改脚本属性值时,重新加载 html 并附加新脚本替换前一个脚本
- python - Python 的 XlsxWriter 模块横向插入图像
- apache - Apache 基本身份验证(htpassword、.htaccess)不适用于 HTTP 到 HTTPS 重定向
- python - Python程序根据给定值添加小数点
- javascript - 在独立的 vue2 spa 中加载 json 翻译文件
- node.js - 云函数