将Pandas DataFrame转换为JSON的最佳方法
我想把 pandas 数据框转换成 JSON 格式,但我得不到我想要的结果。我对 pandas 还不太熟悉,不知道有没有简单的方法可以做到这一点。我现在想到的就是不停地循环来获取“freq”和“state”这两个键,但我觉得应该有更好的办法。有没有什么建议呢?
我想要的 JSON 格式是:
[
{State:'AL',freq:{low:4786, mid:1319, high:249}}
,{State:'AZ',freq:{low:1101, mid:412, high:674}}
,{State:'CT',freq:{low:932, mid:2149, high:418}}
,{State:'DE',freq:{low:832, mid:1152, high:1862}}
,{State:'FL',freq:{low:4481, mid:3304, high:948}}
,{State:'GA',freq:{low:1619, mid:167, high:1063}}
,{State:'IA',freq:{low:1819, mid:247, high:1203}}
,{State:'IL',freq:{low:4498, mid:3852, high:942}}
,{State:'IN',freq:{low:797, mid:1849, high:1534}}
,{State:'KS',freq:{low:162, mid:379, high:471}}
];
但是我的数据框有三列,长这样:
我得到的数据框是:
State type freq
AZ low 1101
CT low 932
DE low 832
FL low 4481
GA low 1619
IA low 1819
IL low 4498
IN low 797
KS low 162
AZ mid 412
CT mid 2149
DE mid 1152
FL mid 3304
GA mid 167
IA mid 247
IL mid 3852
IN mid 1849
KS mid 379
AZ high 674
CT high 418
DE high 1862
FL high 948
GA high 1063
IA high 1203
IL high 942
IN high 1534
KS high 471
1 个回答
2
import pandas as pd
data = """\
State type freq
AZ low 1101
CT low 932
DE low 832
FL low 4481
GA low 1619
IA low 1819
IL low 4498
IN low 797
KS low 162
AZ mid 412
CT mid 2149
DE mid 1152
FL mid 3304
GA mid 167
IA mid 247
IL mid 3852
IN mid 1849
KS mid 379
AZ high 674
CT high 418
DE high 1862
FL high 948
GA high 1063
IA high 1203
IL high 942
IN high 1534
KS high 471"""
data = pd.DataFrame([line.split() for line in data.splitlines()[1:]],
columns=data.splitlines()[0].split())
bystate = data.pivot('State', 'type')
打印
freq
type high low mid
State
AZ 674 1101 412
CT 418 932 2149
DE 1862 832 1152
FL 948 4481 3304
GA 1063 1619 167
IA 1203 1819 247
IL 942 4498 3852
IN 1534 797 1849
KS 471 162 379
一旦你得到了最终的数据表,你可以使用 bystate.to_json()
来获取一个格式为JSON的字符串。