如何在 Python 中将 Pandas DataFrame 转换为 JSON?


Pandas 是一个流行的 Python 库,用于数据处理和分析。在使用 Pandas 的过程中,一个常见的任务是将 DataFrame 转换为 JSON(JavaScript 对象表示法)格式,这是一种轻量级的数据交换格式,广泛用于 Web 应用程序。从 Pandas DataFrame 到 JSON 的转换对于数据共享、数据存储以及不同编程语言之间的数据传输非常有用。

在本教程中,我们将讨论如何使用内置的 Pandas 函数将 Pandas DataFrame 转换为 JSON,探索转换的不同选项和参数,并提供处理特定场景的示例。

将 Pandas DataFrame 转换为 JSON

在 Python 的 pandas 库中,我们可以利用 DataFrame.to_json() 函数将 pandas DataFrame 转换为 JSON 格式。此函数提供了各种自定义选项,使我们能够获得所需的 JSON 格式。在接下来的部分中,我们将深入探讨此函数的可接受参数,并更详细地检查自定义选项。

以下是一些可在 DataFrame.to_json() 函数中用于将 pandas DataFrame 转换为 JSON 的重要参数及其可能值:

  • path_or_buf - 生成的 JSON 将保存到的输出位置。它可以是文件路径或缓冲区对象。默认值为 None。

  • orient - 生成的 JSON 的格式。可能的值为 'split'、'records'、'index'、'columns' 和 'values'。默认值为 'columns'。

  • date_format - DataFrame 中类似日期列使用的日期格式。它可以是任何有效的日期时间格式字符串。默认值为 None。

  • double_precision - JSON 中浮点数的精度。它可以是一个整数,指定要包含的小数位数。默认值为 10。

  • force_ascii - 是否将非 ASCII 字符编码为其 Unicode 转义序列。默认值为 True。

  • date_unit - 类似日期列中时间戳的单位。可能的值为 's'(秒)、'ms'(毫秒)和 'us'(微秒)。默认值为 'ms'。

让我们来看几个示例,以更好地了解 DataFrame.to_json() 函数的使用方法。

示例 1:基本用法

请考虑以下代码。在此代码中,我们创建了一个名为 array_data 的 2×2 NumPy 数组,其中包含四个字符串值。然后,我们将此数组转换为名为 df 的 pandas DataFrame,列名为 'col1' 和 'col2'。最后,我们使用 to_json() 函数将 DataFrame 转换为 JSON 字符串,并使用 print() 函数将其打印到控制台。

import numpy as np
import pandas as pd

# create a NumPy array with two rows and two columns
array_data = np.array([['1', '2'], ['3', '4']])

# convert the NumPy array into a pandas DataFrame with column names
df = pd.DataFrame(array_data, columns=['col1', 'col2'])

# convert the DataFrame to a JSON string
json_data = df.to_json()

# print the resulting JSON string
print(json_data)

输出

执行后,将产生以下输出

{"col1":{"0":"1","1":"3"},"col2":{"0":"2","1":"4"}}

示例 2:将 DataFrame 转换为 JSON

现在,让我们看一个如何使用这些参数在 DataFrame.to_json() 函数中将 pandas DataFrame 转换为 JSON 的示例。

请考虑以下代码。在此示例中,我们将 path_or_buf 参数设置为 'output.json' 以将 JSON 数据保存到名为 'output.json' 的文件中。我们将 orient 参数设置为 'records' 以将 JSON 格式化为记录列表。

我们还将 date_format 参数设置为 'iso' 以对类似日期的列使用 ISO 日期格式,并将 double_precision 参数设置为 2 以包含浮点数的两位小数。最后,我们将 force_ascii 设置为 False 以保留非 ASCII 字符,并将 date_unit 设置为 'ms' 以使用毫秒作为时间戳的单位。

import pandas as pd

# create a sample DataFrame
df = pd.DataFrame({
   'Name': ['John', 'Jane', 'Bob'],
   'Age': [30, 25, 40],
   'Salary': [50000.0, 60000.0, 70000.0],
   'Join_date': ['2022-01-01', '2021-06-15', '2020-11-30']
})

# convert the DataFrame to JSON
json_data = df.to_json(
   path_or_buf='output.json',
   orient='records',
   date_format='iso',
   double_precision=2,
   force_ascii=False,
   date_unit='ms'
)

# print the resulting JSON
print(json_data)

输出

执行后,它将创建一个名为“output.json”的新文件,文件内容如下所示

[
   { "Name": "John", "Age": 30, "Salary": 50000.0, "Join_date": "2022-01-01" },
   { "Name": "Jane", "Age": 25, "Salary": 60000.0, "Join_date": "2021-06-15" },
   { "Name": "Bob", "Age": 40, "Salary": 70000.0, "Join_date": "2020-11-30" }
]

结论

总之,在 Python 中将 pandas DataFrame 转换为 JSON 格式是一个简单的过程,可以使用 pandas 库提供的 to_json() 方法来完成。

此方法允许各种自定义,例如指定 JSON 输出格式、日期格式和精度。它还提供将生成的 JSON 字符串写入文件的功能,从而可以轻松地与其他系统共享数据。通过对 to_json() 方法及其参数的基本了解,您可以轻松地将 pandas DataFrame 转换为 JSON 格式,以用于各种应用程序。

更新于: 2023年4月18日

1K+ 阅读量

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告

© . All rights reserved.