将结构化条目字典解析为美化的 Excel 工作表

Ver*_*ode 3 python excel dictionary dataframe pandas

我有这个 python 字典,我想将这些数据写入 Excel 文件。

\n

注意:有很多类别,每个类别有很多汽车(为简单起见,我使用了 2 个类别)

\n
data = {"Category": {"Diesel" : [{\n                                "Name": "Land Rover", \n                                "Description":"No Description Found", \n                                "Price": "\xc2\xa3 x" }],\n\n                     "Electric" : [{"Name": "Tesla Model X", \n                                  "Description":"No Description Found", \n                                  "Price": "\xc2\xa3 x" }]\n                    }               \n        }\n
Run Code Online (Sandbox Code Playgroud)\n

期望的输出:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n
类别姓名描述价格
柴油机
路虎未找到描述\xc2\xa3 x
电的
特斯拉 Model X未找到描述\xc2\xa3 x
\n

rud*_*vic 5

TL;DR - 最好的解决方案是最后。

\n

最直接的方法是检查数据并逐行附加行:

\n
df = pd.DataFrame(columns=[\'Category\',  \'Name\', \'Description\',  \'Price\'])\ni = 0\nfor category, cars in data[\'Category\'].items():\n  df.loc[i, \'Category\'] = category\n  i += 1\n  for car in cars:\n    df.loc[i, [\'Name\',  \'Description\',  \'Price\']] = car\n    i += 1\n
Run Code Online (Sandbox Code Playgroud)\n

最后,您的数据框应如下所示:

\n
   Category           Name           Description Price\n0    Diesel            NaN                   NaN   NaN\n1       NaN     Land Rover  No Description Found   \xc2\xa3 x\n2  Electric            NaN                   NaN   NaN\n3       NaN  Tesla Model X  No Description Found   \xc2\xa3 x\n
Run Code Online (Sandbox Code Playgroud)\n

最后,将此数据框作为 Excel 文件写入磁盘:

\n
df.to_excel(...)\n
Run Code Online (Sandbox Code Playgroud)\n

默认情况下,NaNExcel 文件中的单元格将为空,这就是您在示例中的情况。

\n

但是,您可以通过使用纯 pandas 解决方案来完全避免循环和计数器:

\n
pd.concat(\n    df\n    for category, cars in data[\'Category\'].items()\n    for df in (pd.DataFrame({\'Category\': [category]}), pd.DataFrame(cars)))\n
Run Code Online (Sandbox Code Playgroud)\n