将dataframe转换为JSON,使用groupby嵌套2级

2024-03-29 11:06:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个小要求,我需要在JSON中列出给定两周内的所有客户及其金额格式。当前,我有一个这样的数据帧-

  FortNight       Amount      Customer     Parameter
  Apr-2FN-2018   339632.00    10992     CustomerSales
  Apr-2FN-2018   27282.00     10994     CustomerSales 
  Apr-2FN-2018   26353.00     10995     CustomerSales 
  May-1FN-2018   24797.00     11000     CustomerSales
  May-1FN-2018   21093.00     10990     CustomerSales
  May-2FN-2018   45679.0      10992     CustomerSales
  May-2FN-2018   45459.0      10995     CustomerSales
  May-2FN-2018   35885.0      10994     CustomerSales

应为JSON-

^{pr2}$

我试过从- Convert dataframe to JSON with 2 level nested array

但我仍然停留在另一个层次。在

我也试过别的办法,但没用。欢迎任何帮助。提前谢谢!!。。。在


Tags: 数据jsonconvertdataframe客户parameter格式customer
1条回答
网友
1楼 · 发布于 2024-03-29 11:06:25

您可以使用CustomerSales的字典,其中键等于FortNight值,而不是在每个字典中使用“两周”字符串作为键的字典列表。考虑到规定的要求,以下内容应该有效。您可以遍历数据帧并构建字典。然后,第二组代码将该字典转换为您指定的格式。在

sales = {}

for idx, row in df.iterrows():
    fn = row["FortNight"]
    fn_sales = sales.get(fn)
    if fn_sales is None:
        sales[fn] = {
                "Details": []
                }
        fn_sales = sales.get(fn)

    fn_sales["Details"].append({
            "Customer": row["Customer"],
            "Amount": row["Amount"]
            }
    )

sales_obj = {"CustomerSales": []}

for fn, details in sales.items():
    sales_obj["CustomerSales"].append({
            "FortNite": fn,
            "Details": details["Details"]
            })

相关问题 更多 >