Python转换为_json()的格式无效
我在JSON字符串输出方面遇到问题。我使用的是选项卡分隔的CSV文件,它看起来如下所示:Python转换为_json()的格式无效,python,json,python-3.x,pandas,Python,Json,Python 3.x,Pandas,我在JSON字符串输出方面遇到问题。我使用的是选项卡分隔的CSV文件,它看起来如下所示: date time loc_id country name sub1_id sub2_id type 2014-09-11 00:00:01 179 US acmnj 269 382 ico 2014-09-11 00:00:01 179 US acmnj 269 382 ico
date time loc_id country name sub1_id sub2_id type
2014-09-11 00:00:01 179 US acmnj 269 382 ico
2014-09-11 00:00:01 179 US acmnj 269 382 ico
2014-09-11 00:00:01 179 GB acmnj 269 382 ico
2014-09-11 00:00:01 179 US acmnj 269 382 ico
2014-09-11 00:00:02 179 GB acmnj 269 383 ico
2014-09-11 00:00:02 179 JP acmnj 269 383 ico
df = pd.read_csv('log.csv',sep='\t',encoding='utf-16')
count = df.groupby(['country','name','sub1_id','sub2_id','type']).size()
print(count.order(na_position='last',ascending=False).to_frame().to_json(orient='index'))
代码如下所示:
date time loc_id country name sub1_id sub2_id type
2014-09-11 00:00:01 179 US acmnj 269 382 ico
2014-09-11 00:00:01 179 US acmnj 269 382 ico
2014-09-11 00:00:01 179 GB acmnj 269 382 ico
2014-09-11 00:00:01 179 US acmnj 269 382 ico
2014-09-11 00:00:02 179 GB acmnj 269 383 ico
2014-09-11 00:00:02 179 JP acmnj 269 383 ico
df = pd.read_csv('log.csv',sep='\t',encoding='utf-16')
count = df.groupby(['country','name','sub1_id','sub2_id','type']).size()
print(count.order(na_position='last',ascending=False).to_frame().to_json(orient='index'))
输出如前几行所示:
[美国,acmnj,2693382,2693383,acmnj,2693382,ico]:{{0:73609},[它,acmnj,acmnj,2693383,ico,[它,acmnj,2693383,2693383,美国,acmnj,269338383,ico]:{0:7[0:1747,[美国,acmnj,acmnj,2693383,2693382,ico,ico,ico]::::::{{{0:0:0:0:739},[0:730:739},[0:0:73609},[0:739},[0:739},[0:739},[0:739},[0:409},[0:416},[0:41346},[0:416},[中国,中国,全国,全国,全国[US,popcdd,178365,ico]:{0:33168}[IT,acmnj,269400,ico]:{0:33026},[IT,acmnj,269405,ico]:{0:32824},[IT,ACHRFB141141,42,ico]:{0:26986},[GB,acmnj,269405,ico]:{0:25895},[IN,acmnj,269383,ico]:{0:25647},[GB,acmnj,269400,ico]:{0:25488
我想在PHP中加载此输出,但在尝试解码时得到NULL。我使用JSON验证器检查字符串,结果无效。我也尝试了不使用orient参数,但得到的JSON格式无效。这似乎是Pandas的问题。我重现了您的错误 DataFrame.to_json可以采用几种不同的定向参数:“拆分”、“记录”、“索引”、“列”和“值” 在您的例子中,“拆分”、“记录”和“值”似乎起作用,但“索引”和“列”则不起作用 您可以使用json模块在python中快速测试这一点:
df = pd.read_csv('log.csv',sep='\t',encoding='utf-16')
count = df.groupby(['country','name','sub1_id','sub2_id','type']).size()
f=count.order(ascending=False).to_frame()
json.loads(f.to_json(orient='index')) # This failed for me
json.loads(f.to_json(orient='records')) #This worked
我已经试过了,但是我得到的输出是这样的…[{0:157965},{0:154559},{0:75518},{0:74515},{0:73697},{0:71854},{0:56883}…我没有键值-我用来对计数进行分组的列。我需要使用PHP在MySQL中插入这些值。您需要通过PHP吗?您可以使用dataframe.to_sql直接将数据帧发送到MySQL-这在您的情况下有效吗?是的。我需要制作用于报告的PHP API脚本。