达到最大递归级别将Pandas Dataframe转换为Json

时间:2020-03-02 13:45:54

标签: python pandas

我有一个pandas数据框,其中包含数千行和几列。尝试将其转换为json文件时出现错误。

这是要转换的代码:

sessionAttendance.to_json('SessionAttendance.json')

这是我得到的错误:

OverflowError: Maximum recursion level reached


                             _id       wondeID  session               updatedAt
0       123456789101112131415161  AA1234567891        AM 2019-06-21 08:05:50.845
1       123456789101112131415162  AA1234567892        AM 2019-06-21 08:05:50.845
2       123456789101112131415163  AA1234567893        AM 2019-06-21 08:05:50.845
3       123456789101112131415164  AA1234567894        AM 2019-06-21 08:05:50.845


[234195 rows x 4 columns]

2 个答案:

答案 0 :(得分:0)

这似乎与Mongo格式化_id模块未正确处理的json字段的方式有关。一种解决方法是将default_handler=str设置为强制json格式化程序对任何不需要的类型使用字符串表示形式:

sessionAttendance.to_json('SessionAttendance.json', default_handler=str)

免责声明:应归功于其他SO post

答案 1 :(得分:-1)

import sys
sys.setrecursionlimit(1500) # this number can be any limit

如果是表,则上面的代码应对其进行修复。如果您的熊猫数据框本身具有作为对象的列,则可能需要确保对象中没有循环依赖项

https://github.com/pandas-dev/pandas/issues/4873

这可能与上面发布的问题有关。要克服它,首先将日期时间列转换为字符串

df['updatedAt'] = df['updatedAt'].dt.strftime('%Y-%m-%d %H:%M:%S')

将其转换为json应该可以。