将字典列表转换为DataFrame并返回完全相同的列表?

时间:2019-11-12 13:35:32

标签: python json django pandas dataframe

在我的Django视图中,我想将字典列表加载到Pandas数据框中,对其进行操作,再次转​​储以进行字典操作,并作为该视图的JSON响应的一部分返回:< / p>

def test(request):
    pre_pandas = [{'type': 'indoor', 'speed': 1, 'heart_rate': None}, {'type': 'outdoor', 'speed': 2, 'heart_rate': 124.0}, {'type': 'commute', 'speed': 3, 'heart_rate': 666.0}, {'type': 'indoor', 'speed': 4, 'heart_rate': 46.0}]

    df = pd.DataFrame(pre_pandas)

    # some data manipulation here...

    post_pandas = df.to_dict(orient='records')

    response = {
        'pre_pandas': pre_pandas,
        'post_pandas': post_pandas,
    }

    return JsonResponse(response)

我的方法存在的问题是Pandas的to_dict()方法用None替换了Python的nan,因此响应中包含NaN

 {"pre_pandas": [{"type": "indoor", "speed": 1, "heart_rate": null}...], "post_pandas": [{"heart_rate": NaN, "speed": 1,...}]

JavaScript无法解决NaN

是否有一种方法可以将数据帧转储到dict,以使输出与生成它的dict完全相同?

我可以使用列表replace()方法手动调整数据,但是感觉很尴尬,而且我还需要涵盖其他所有(如果有的话)转换Pandas的to_dict()方法

我也无法将post_pandas转储到JSON,因为我已经在JsonResponse中这样做了。

1 个答案:

答案 0 :(得分:0)

您从提供的字典中推断出pre_pandas Dataframe中的列,为防止这种情况,您可以显式指定数据类型对象。是什么使所有值都成为对象类型。

喜欢:

df = pd.DataFrame(pre_pandas, dtype=object)