创建汇总成字典的pandas数据帧的JSON响应

时间:2019-06-28 14:49:16

标签: python json pandas dataframe dictionary

我有以下flask函数,我想返回一个有效的json resp

   modified_results = modified_results.groupby(['some_type'])
   tempResult = {}
   for groupName, group in modified_results:
        df = group.drop(columns=['some_type'])
        tempResult[groupName] = processHours(df, project_code).to_json(orient='records')
   return jsonify(tempResult)

我正在以我希望的格式获得响应,除了有转义字符,并且tempResult字典将整个数据帧作为键标签的一个对象值。

如何将这样的字典合并成json:

dictObj = {key1:pd.DataFrame(), key2: pd.DataFrame()}
resp = dictObj.to_json()
return resp

谢谢。

1 个答案:

答案 0 :(得分:0)

我确实得到了答案,但是to_json默默地忽略了索引值。这就是我所做的。

modified_results = modified_results.groupby(['some_type'])
newResults = {}
for groupName, group in modified_results:
    df = group.drop(columns=['some_type'])
    newResults[groupName] = processHours(df, project_code)

df_keys = pd.concat(newResults)
return df_keys.to_json(index=True, orient='records')

index=True参数无效。

该问题当前似乎已打开= Github Open Bug

另一种解决方案是将键添加为列,并在收到响应后对其进行过滤(这不是实际的解决方案):

    modified_results = modified_results.groupby(['some_type'])
    newResults = {}
    for groupName, group in modified_results:
        df = group.drop(columns=['some_type'])
        df = processHours(df, project_code)
        df = df.assign(some_type=[groupName]*len(df))
        newResults[groupName] = df

    resp = pd.concat(newResults)
    return resp.to_json(index=True, orient='records')