def a():
df = pd.DataFrame([[31, 'bob'], [21, 'alex']], index=['row_1', 'row_2'], columns=['age', 'name'])
print(df)
b(df)
print("over")
def b(df):
data = []
data.append({'class': 'a', 'age': df.at['row_1', 'age']})
data.append({'class': 'a', 'age': df.at['row_1', 'age']})
print(data)
data_json = json.dumps(data)
print("data to json")
if __name__ == '__main__':
在函数b中,从dataframe df中取一个元素的值,和其他数据一起组成dict,两个dict再组成一个list。然后对这个list 进行json.dumps 操作。
期间,我们将df和data打印出来,如下,看起来都没有问题
age name
row_1 31 bob
row_2 21 alex
data:
[{'class': 'a', 'age': 31}, {'class': 'a', 'age': 31}]
但是在执行代码的时候就会报错
raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type int64 is not JSON serializable
data_json = json.dumps(data)
粗看data没有任何问题,list里有两个元素,每个元素一个dict。把data print出来的内容直接copy出来单独执行json.dumps也没有问题。但是一放到程序中执行就有问题了。
后来发现原因在于从dataframe中取元素的时候
df.at['row_1', 'age']
取出来的不是int,而是numpy.int64。 所以会报错TypeError: Object of type int64 is not JSON serializable。
解决办法:
一个最简单的解决办法就是将他转成int,
data.append({'class': 'a', 'age': int(df.at['row_1', 'age'])})
这样就没有问题了:
age name
row_1 31 bob
row_2 21 alex
[{'class': 'a', 'age': 31}, {'class': 'a', 'age': 31}]
data to json
其他方法可以查其他资料啦。
代码如下:import pandas as pdimport jsondef a(): df = pd.DataFrame([[31, 'bob'], [21, 'alex']], index=['row_1', 'row_2'], columns=['age', 'name']) print(df) b(df) print("over")def b(df): data = [] data.append({'class': 'a', 'ag
网上查了很多原因,而这个问题是因为使用json.dumps()函数时,dumps是将dict数据转化为str数据,但是dict数据中包含byte数据所以会报错
处理方法主要就下面这几种:
1.编写一个类
# -*- coding:utf-8 -*-
# !/usr/bin/env python3
# -*- coding: utf-8 -*-
import json
class MyEncoder(json.JSONEncoder):
def default(self, obj):
1、json.dumps: 用于将 Python 对象编码成 JSON 字符串
import json
data = [{ 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 }]
#data = { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 }
json = json.dumps...
numbers = [2,3,4,7,11,13]
with open(file_name,'w') as f_obj:
json.dump(numbers, f_obj)#存入到指定文件第一个参数为要存入的内容,第二个为文件的对象
#json.load()
with open(fil
一、
Json转为
DataFrame
当我们在进行数据分析的时候,经常会遇到各种各样格式的文件,今天在这里整理一下对于
json格式的文件怎么转化为
dataframe的形式的文件。
1.1、对于简单的
json形式
所谓的简单的
json格式,就是将字典形式的文件,直接输出成
dataframe形式的文件。
下面将创建
一个test.
json文件来进行示范:
首先网上大多数博客没有明确说明问题的来源
这个问题是由于json.dumps()函数引起的。dumps是将dict数据转化为str数据,但是dict数据中包含byte数据所以会报错。
解决:编写一个解码类 遇到byte就转为str
1.MyEncoder.py
import json
class MyEncoder(json.JSONEncoder):
def default(self, obj)...
今天用
json.
dumps写入
json文件时出现了,date is not
JSON serializable的
错误,无法正常序列化date
对象,这是我们需要自定义encoding方法来解决一些非
JSON认识的
对象,我们用date作为例子,通用模板改一下就行了
class DateEnconding(
json.
JSONEncoder):
def default(self, o):
1down
voteThis
is not supported by default, but you can make it work quite easily! There are several things you'll want to encode if you want the exact same data back:The
data itself, which you
在python
中导入
json包可以方便地操作
json文件,但是偶尔会遇到 TypeError: Object of type xxx is not
JSON serializable
错误,通常报错的位置是很正常的int或float,本文
记录该问题解决方法。
自定义序列化方法
class MyEncoder(
json.
JSONEncoder):
def default(self, obj):
if isinstance(obj, np.integer):
一、json.dumps简单介绍
json.dumps的功能是将字典类型转换为json格式的字符串类型,爬虫领域经常用到该函数,要配合请求头’Content-Type’: 'application/json;charset=utf-8’进行使用。
二、简单使用
import json
data = {'token':'e5dads5 3455s2','verify':True}
data_json = json.dumps(data)
print(data_json)
#输出:{"token": "e
是的,我知道。`json.dumps()` 是将 Python 对象转换为 JSON 字符串的方法。其中,`dumps` 是 `dump string` 的缩写。它接受一个 Python 对象,例如列表、字典等,并将其转换为 JSON 字符串。例如,以下代码将一个 Python 字典转换为 JSON 字符串:
```python
import json
data = {'name': 'John', 'age': 30, 'city': 'New York'}
json_data = json.dumps(data)
print(json_data)
{"name": "John", "age": 30, "city": "New York"}
在这个例子中,`data` 是一个 Python 字典,使用 `json.dumps()` 方法将其转换为 JSON 字符串,并将其赋给 `json_data` 变量。最后,我们将 `json_data` 打印出来,查看转换后的结果。