看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
pandas.DataFrame.to_json() 是 Pandas 中用于将 DataFrame 对象转换为 JSON 格式字符串或将其写入 JSON 文件的方法。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于数据传输和存储。通过 to_json() 方法,可以方便地将数据以 JSON 格式导出,以便于与其他系统或应用程序进行数据交换。
DataFrame.to_json(
path_or_buf=None,
*,
orient=None,
date_format=None,
double_precision=10,
force_ascii=True,
date_unit='ms',
default_handler=None,
lines=False,
compression='infer',
index=None,
indent=None,
storage_options=None,
mode='w'
)
path_or_buf
str、pathlib.Path、file-like object、NoneNoneNone,则返回 JSON 字符串。orient
str,可选'columns''split': 分割格式,包含 index、columns 和 data。'records': 每一行作为一个字典。'index': 索引为键,值为列数据。'columns': 列为键,值为列数据。'values': 仅包含值,不包含索引和列名。'table': 兼容 JSON Table Schema 的格式。date_format
str,可选None'epoch': 将日期转换为自1970年1月1日以来的毫秒数。'iso': 使用 ISO 格式的日期字符串。None: 默认情况下,日期将以毫秒数表示。double_precision
int,可选10force_ascii
bool,可选TrueTrue,所有非 ASCII 字符将被转义。如果为 False,则允许非 ASCII 字符直接出现在输出中。date_unit
str,可选'ms''s': 秒'ms': 毫秒'us': 微秒'ns': 纳秒default_handler
callable,可选Nonelines
bool,可选FalseTrue,则每一行将作为一个单独的 JSON 对象,适用于大规模数据的流式处理。compression
str,可选'infer''gzip'、'bz2'、'zip'、'xz'、'zstd' 等。'infer' 会根据文件扩展名自动推断。index
bool,可选TrueFalse,则不包含索引。indent
int,可选Nonestorage_options
dict,可选Nonemode
str,可选'w''w'。其他选项包括 'a'(追加模式)。str 或 Nonepath_or_buf 为 None,则返回一个包含 JSON 数据的字符串。path_or_buf,则将 JSON 数据写入指定的位置,返回 None。DataFrame.to_json() 主要用于将 DataFrame 数据导出为 JSON 格式,以便与其他系统或应用程序进行数据交换。常见的使用场景包括:
import pandas as pd
# 构造示例数据
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [30, 25, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
# 将 DataFrame 转换为 JSON 字符串
json_str = df.to_json()
print(json_str)
输出
{"Name":{"0":"Alice","1":"Bob","2":"Charlie"},"Age":{"0":30,"1":25,"2":35},"City":{"0":"New York","1":"Los Angeles","2":"Chicago"}}
import pandas as pd
# 构造示例数据
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [30, 25, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
# 将 DataFrame 写入 JSON 文件
df.to_json('data.json', orient='records', lines=True, indent=4)
# 读取并打印 JSON 文件内容
with open('data.json', 'r', encoding='utf-8') as file:
content = file.read()
print(content)
输出
{
"Name": "Alice",
"Age": 30,
"City": "New York"
}
{
"Name": "Bob",
"Age": 25,
"City": "Los Angeles"
}
{
"Name": "Charlie",
"Age": 35,
"City": "Chicago"
}
import pandas as pd
from datetime import datetime
# 构造示例数据
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Birthdate': [datetime(1990, 1, 1), datetime(1985, 5, 23), datetime(1992, 7, 15)],
'Score': [95.123456789, 88.987654321, 92.456789123]
}
df = pd.DataFrame(data)
# 将 DataFrame 转换为 JSON 字符串,指定日期格式和浮点数精度
json_str = df.to_json(date_format='iso', double_precision=5, indent=4)
print(json_str)
输出
{
"Name": {
"0": "Alice",
"1": "Bob",
"2": "Charlie"
},
"Birthdate": {
"0": "1990-01-01T00:00:00.000Z",
"1": "1985-05-23T00:00:00.000Z",
"2": "1992-07-15T00:00:00.000Z"
},
"Score": {
"0": 95.12346,
"1": 88.98765,
"2": 92.45679
}
}
import pandas as pd
# 构造包含非 ASCII 字符的示例数据
data = {
'姓名': ['艾丽丝', '鲍勃', '查理'],
'年龄': [30, 25, 35],
'城市': ['纽约', '洛杉矶', '芝加哥']
}
df = pd.DataFrame(data)
# 将 DataFrame 转换为 JSON 字符串,不强制 ASCII 并使用缩进
json_str = df.to_json(force_ascii=False, indent=2)
print(json_str)
输出
{
"姓名": {
"0": "艾丽丝",
"1": "鲍勃",
"2": "查理"
},
"年龄": {
"0": 30,
"1": 25,
"2": 35
},
"城市": {
"0": "纽约",
"1": "洛杉矶",
"2": "芝加哥"
}
}
import pandas as pd
# 构造示例数据
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [30, 25, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
# 将 DataFrame 逐行写入 JSON 文件
df.to_json('data_lines.json', orient='records', lines=True)
# 读取并打印 JSON 文件内容
with open('data_lines.json', 'r', encoding='utf-8') as file:
for line in file:
print(line.strip())
输出
{"Name":"Alice","Age":30,"City":"New York"}
{"Name":"Bob","Age":25,"City":"Los Angeles"}
{"Name":"Charlie","Age":35,"City":"Chicago"}
DataFrame.to_json() 是一个强大的方法,用于将 Pandas DataFrame 转换为多种格式的 JSON 数据。通过灵活配置参数,可以控制 JSON 的格式、日期处理、浮点数精度等,以满足不同的数据交换和存储需求。在数据分析和机器学习项目中,掌握 to_json() 的使用方法,可以有效地实现数据的导出和集成,与其他系统或前端应用程序进行高效的数据交互。
更新时间:2024-10-10 09:11:20 标签:pandas python json