将numpy.nd数组转换为json

6

我有一个名为genre_rail的数据框,其中一列包含numpy.ndarray。 数据框如下所示datframe

其中的数组如下所示:

['SINGTEL_movie_22906' 'SINGTEL_movie_22943' 'SINGTEL_movie_24404'
 'SINGTEL_movie_22924' 'SINGTEL_movie_22937' 'SINGTEL_movie_22900'
 'SINGTEL_movie_24416' 'SINGTEL_movie_24422']

我尝试使用以下代码

import json
json_content = json.dumps({'mydata': [genre_rail.iloc[i]['content_id'] for i in range(len(genre_rail))] })

但是遇到了错误

类型错误:数组不可序列化为JSON

我需要的输出结果是

{"Rail2_contend_id":
["SINGTEL_movie_22894","SINGTEL_movie_22898",
"SINGTEL_movie_22896","SINGTEL_movie_24609","SINGTEL_movie_2455",
"SINGTEL_movie_24550","SINGTEL_movie_24548","SINGTEL_movie_24546"]}

既然您提到了数据框架,那么这里也有两个相关的问题:如何将 Pandas 数据框架转换为不带索引的 JSON 格式如何将 Pandas 数据框架转换为 JSON 格式 - MB-F
这个问题也已经过时了。现在 Pandas 已经有了 df.to_json(PATH_HERE, orient='records') 方法。有关 orient 的函数文档中提供了各种 JSON 结构格式的说明。 - Ufos
2个回答

21

你可以使用 .tolist 方法将数组转换为 JSON,然后像这样编写:

np_array_to_list = np_array.tolist()
json_file = "file.json" 
json.dump(b, codecs.open(json_file, 'w', encoding='utf-8'), sort_keys=True, indent=4)

我尝试了你的方法,但似乎程序卡在了 tolist() 处。 - Harvett
@yurenzhong tolist() 对我来说进行了非常长的计算时间。 - Eduardo Pignatelli

8

将所有数据加载到字典中,然后转储为json。以下代码可能会对您有所帮助:

import json

#Data
d = ['SINGTEL_movie_22906', 'SINGTEL_movie_22943', 'SINGTEL_movie_24404'
 'SINGTEL_movie_22924', 'SINGTEL_movie_22937', 'SINGTEL_movie_22900'
 'SINGTEL_movie_24416', 'SINGTEL_movie_24422']

#Create dict
dic = {}
dic['Rail2_contend_id'] = d

print dic

#Dump data dict to jason
j = json.dumps(dic)

输出

{'Rail2_contend_id': ['SINGTEL电影_22906', 'SINGTEL电影_22943', 'SINGTEL电影_24404SINGTEL电影_22924', 'SINGTEL电影_22937', 'SINGTEL电影_22900SINGTEL电影_24416', 'SINGTEL电影_24422']}


注意:本文中的单词 "contend" 可能是一个错别字,应该是 "content"。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接