Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python转换为_json()的格式无效_Python_Json_Python 3.x_Pandas - Fatal编程技术网

Python转换为_json()的格式无效

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

我在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 
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脚本。