• DataFrame转化为json的方法教程


    网络上有好多的教程,讲得不太清楚和明白,我用实际的例子说明了一下内容,附档代码,方便理解和使用 

    DataFrame.to_json(path_or_buf=None, orient=None, date_format=None, double_precision=10, force_ascii=True, date_unit='ms', default_handler=None, lines=False, compression='infer', index=True, indent=None) [source]

    将对象转换为JSON字符串。

    注意:NaNNone将被转换为nulldatetime对象将被转换为UNIX时间戳。

    参数:

    path_or_buf :str 或 file handle, 默认为 None

    文件路径或对象。如果未指定,则结果以字符串形式返回。

    orient :str

    预期的JSON字符串格式的指示。

    1) Series:

    默认值为‘index’

    允许的值为:{'split','records','index','table'}

    2) DataFrame:

    默认为‘columns’

    允许的值为:

    {'split','records','index','columns','values','table'}

    3) JSON字符串格式:

    'split':类似{'index'-> [index],

    'columns'-> [columns],'data'-> [values]}的字典

    'records':类似于[{column-> value},…,{column-> value}]的列表

    'index':类似{index->​​ {column-> value}}的字典

    'columns':类似{column-> {index->​​ value}}的字典

    'values’:只是值数组

    'table':类似{'schema':{schema},'data':{data}}的字典

    描述数据,其中数据成分类似于orient='records'

    在版本0.20.0中更改。

    date_format :{None, ‘epoch’, ‘iso’}

    日期转换的类型。'epoch'= epoch milliseconds

    'iso'= ISO8601。默认值取决于orient

    对于 orient='table',默认值为'iso'

    对于所有其他东方,默认值为‘epoch’.。

    double_precision :int, 默认为10

    在对浮点值进行编码时要使用的小数位数。

    force_ascii :bool, 默认为True

    强制将字符串编码为ASCII

    date_unit :str,默认为“ms”(毫秒)

    要编码的时间单位,控制时间戳和ISO8601精度。

    “s”,“ms”,“us”,“ns”之一分别表示秒,毫秒,微秒和纳秒。

    default_handler :callable, 默认为None

    如果对象不能转换为适合JSON的格式,则调用。

    应该接收一个参数,该参数是要转换的对象并返回一个可序列化对象。

    lines :bool, 默认为 False

    如果'orient''records',则写出行分隔的json格式。

    如果不正确的‘orient’将抛出ValueError,因为其他人没有列出。

    compression :{‘infer’, ‘gzip’, ‘bz2’, ‘zip’, ‘xz’, None}

    表示要在输出文件中使用的压缩的字符串,

    仅在第一个参数是文件名时使用。默认情况下,

    压缩是从文件名推断出来的。

    在0.24.0版本中更改:增加了“infer”选项并将其设置为默认

    index :bool, 默认为 True

    是否在JSON字符串中包括索引值。

    仅当Orient“split”“table”时,

    才支持不包括index(index=False)。

    0.23.0版中的新功能。

    indent int, 可选

    用于缩进每条记录的空白长度。

    1.0.0版的新功能。。

    返回值:

    None 或 str

    如果path_or_bufNone

    则将生成的json格式作为字符串返回。

    否则返回None

    Notes

    indent=0的行为与stdlib不同,stdlib不会缩进输出,但会插入新行。目前,在panda中,indent=0和默认的indent=None是等价的,不过在将来的版本中可能会更改。

    1. df = pd.DataFrame( [["A0001", "张三"], ["A0002", "李四"]], index=["row 1", "row 2"],columns=["工号", "姓名"] )
    2. print('-------------------------------------------')
    3. print(df)
    4. print('index')
    5. print(df.to_json(orient='index',force_ascii=False))
    6. print('columns')
    7. print(df.to_json(orient='columns',force_ascii=False))
    8. print('split')
    9. print(df.to_json(orient='split',force_ascii=False))
    10. print('records')
    11. print(df.to_json(orient='records',force_ascii=False))
    12. mydate={"parts":df.to_json(orient='records',force_ascii=False)}
    13. print(mydate)
    14. print('table')
    15. print(df.to_json(orient='table',force_ascii=False))
    16. print('values')
    17. print(df.to_json(orient='values',force_ascii=False))
    18. print('-------------------------------------------')
    19. #遍历
    20. for index, row in df.iterrows():
    21. print(index)
    22. print(row)

    输出内容,理解转化在json的内容的逻辑

    1. -------------------------------------------
    2. 工号 姓名
    3. row 1 A0001 张三
    4. row 2 A0002 李四
    5. index
    6. {"row 1":{"工号":"A0001","姓名":"张三"},"row 2":{"工号":"A0002","姓名":"李四"}}
    7. columns
    8. {"工号":{"row 1":"A0001","row 2":"A0002"},"姓名":{"row 1":"张三","row 2":"李四"}}
    9. split
    10. {"columns":["工号","姓名"],"index":["row 1","row 2"],"data":[["A0001","张三"],["A0002","李四"]]}
    11. records
    12. [{"工号":"A0001","姓名":"张三"},{"工号":"A0002","姓名":"李四"}]
    13. {'parts': '[{"工号":"A0001","姓名":"张三"},{"工号":"A0002","姓名":"李四"}]'}
    14. table
    15. {"schema":{"fields":[{"name":"index","type":"string"},{"name":"工号","type":"string"},{"name":"姓名","type":"string"}],"primaryKey":["index"],"pandas_version":"1.4.0"},"data":[{"index":"row 1","工号":"A0001","姓名":"张三"},{"index":"row 2","工号":"A0002","姓名":"李四"}]}
    16. values
    17. [["A0001","张三"],["A0002","李四"]]
    18. -------------------------------------------
    19. row 1
    20. 工号 A0001
    21. 姓名 张三
    22. Name: row 1, dtype: object
    23. row 2
    24. 工号 A0002
    25. 姓名 李四
    26. Name: row 2, dtype: object

  • 相关阅读:
    java 企业工程管理系统软件源码 自主研发 工程行业适用
    OS | 【四 文件管理】强化阶段大题解构
    sql 10
    MySQL事务
    开源治理的基本实践与指导原则
    DSMM是什么?一篇内容让你快速了解
    【状态机模型】大盗阿福 买卖股票IV V
    力扣每日一题 找出数组的第 K 大和 小根堆 逆向思维(TODO:二分+暴搜)
    SpringMVC中如何编写一个Controller呢?
    【Spring MVC 源码】Spring MVC 如何解析请求
  • 原文地址:https://blog.csdn.net/yqj234/article/details/128094950