【Python】Pandas Dataframe转json

pandas是python里一个高效的数据处理库,在web开发中,有时候需要读取本地数据返回给前端,返回给前端的一般是json数据。pandas通过函数to_json()直接json转化的能力。

下面是函数说明:


DataFrame.to_json(
    path_or_buf=None,
    orient=None, 
    date_format='epoch', 
    double_precision=10, 
    force_ascii=True, 
    date_unit='ms', 
    default_handler=None, 
    lines=False)
    

一共有8个参数,但8个参数都有默认值,所以并不需要强制提供。下面看一些实例:

首先一个DataFrame

import pandas
df = pandas.DataFrame({"A": [i*2 for  i in range(10)], "B": [i*2+1 for i in range(10)]})

表头分别是A、B,内容分别是20以内的偶数和奇数,如下:

    A   B
0   0   1
1   2   3
2   4   5
3   6   7
4   8   9
5  10  11
6  12  13
7  14  15
8  16  17
9  18  19

转为json形式:

print(df.to_json())

结果为:

{"A":{"0":0,"1":2,"2":4,"3":6,"4":8,"5":10,"6":12,"7":14,"8":16,"9":18},"B":{"0":1,"1":3,"2":5,"3":7,"4":9,"5":11,"6":13,"7":15,"8":17,"9":19}}

默认情况下会用索引作为键值。

那如果不想要索引作为怎么办?比方说就为了节省带宽,不要键值,只要数据,这就要用到那些参数了。如下:

print(df.to_json(orient="values"))

将orient参数设置为values,输出结果为:

[[0,1],[2,3],[4,5],[6,7],[8,9],[10,11],[12,13],[14,15],[16,17],[18,19]]

详细的API说明:

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_json.html