Python 相当于 R 的 dput() 函数

问题描述 投票:0回答:5

Python中有没有类似于R中的dput()函数的函数?

python r
5个回答
30
投票

对于

pandas.DataFrame
print(df.to_dict())
,如此处所示以及手册中详细说明。

然后再次返回

df = pandas.DataFrame.from_dict(data_as_dict)

默认输出样式为

'orient=dict'
,但如果您更喜欢
'orient=list'
,则:

print(df.to_dict('list'))

13
投票

将 Python 对象序列化为文件有多种选项:

  • json.dump()
    以JSON格式存储数据。它具有很强的可读性和可编辑性,但只能存储列表、字典、字符串、数字、布尔值,因此不能存储复合对象。您需要先
    import json
    才能使
    json
    模块可用。
  • pickle.dump()
    可以存储大多数物品。

不太常见:

  • shelve
    模块将多个Python对象存储在DBM数据库中,大部分充当持久性
    dict
  • marshal.dump()
    :不确定你什么时候需要它。

11
投票

如何没有人提到

repr()
对我来说是一个谜。
repr()
的作用几乎与 R 的
dput()
的作用完全相同。这里有一些例子:

>>> a = np.arange(10)
>>> repr(a)
'array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])'
>>> d = dict(x=1, y=2)
>>> repr(d)
"{'x': 1, 'y': 2}"
>>> b = range(10)
>>> repr(b)
'range(0, 10)'

7
投票

这个答案重点关注

json.dump()
json.dumps()
以及如何将它们与 numpy 数组一起使用。如果你尝试,Python 会告诉你一个错误,指出 ndarrays 不可 JSON 序列化:

import numpy as np
import json

a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
json.dumps(a)
TypeError: Object of type 'ndarray' is not JSON serializable

您可以先将其转换为列表来避免这种情况。请参阅下面的两个工作示例:

json.dumps()

json.dumps()
似乎最接近 R 的
dput()
,因为它允许您直接从控制台复制粘贴结果:

json.dumps(a.tolist()) # '[[1, 2, 3], [4, 5, 6], [7, 8, 9]]'

json.dump()

json.dump()
dput()
不一样,但它仍然非常有用。
json.dump()
会将您的对象编码为 json 文件。

# Encode:
savehere = open('file_location.json', 'w')
json.dump(a.tolist(), savehere)

然后您可以在其他地方解码:

# Decode:
b = open('file_location.json', 'r').read()   # b is '[[1, 2, 3], [4, 5, 6], [7, 8, 9]]'
c = json.loads(b)

然后你可以再次将其转换回 numpy 数组:

c = np.array(c)

更多信息

关于避免“不可序列化”错误,请参阅:


0
投票

IMO,

json.dumps()
(注意 s)甚至更好,因为它返回一个字符串,而不是
json.dump()
,后者需要您写入文件。

© www.soinside.com 2019 - 2024. All rights reserved.