在我的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
中这样做了。
答案 0 :(得分:0)
您从提供的字典中推断出pre_pandas Dataframe中的列,为防止这种情况,您可以显式指定数据类型对象。是什么使所有值都成为对象类型。
喜欢:
df = pd.DataFrame(pre_pandas, dtype=object)