打印pandas数据框以获得可重现的示例(相当于R中的dput)

Yeh*_*ens 12 pandas

最近我经常发现自己在问Pandas我依赖于我正在使用的数据的问题,到目前为止我需要花很长时间来创建一个与我的数据相似的数据框(可重复的数据框),以便SO用户可以轻松复制它到他们的机器.

我宁愿找到一个方便的方法,所以我可以在我的问题中打印我的小DF,其他用户可以轻松地收集它,因此用最小的努力创建它.

R我习惯dput在控制台的函数中打印我的数据的一小部分样本,然后在我的问题中打印输出(示例): 运行for循环时获取错误"级别因素集是不同的"

我已经注意到了这个解释,但我认为它不适合为其他SO用户打印数据样本: Python相当于R的dput()函数

在Pandas中是否有相同的方法来做到这一点?

提前致谢!

Dav*_*ale 13

如果您可以使用二进制数据,则可以使用该pickle库.它通常允许序列化和反序列化仲裁对象(在提供类定义的条件下,如果安装了pandas,则对于数据帧是正确的).

如果你需要一个人类可读的格式,你可以用你的数据框创建一个Python字典df_dict = df.to_dict(),然后打印这个字典(查看它并复制粘贴),或者将它转储到JSON字符串.

如果要将字典转换回pandas,请使用df = pd.DataFrame.from_dict(df_dict).

解码和编码的最小例子:

import pandas as pd
df = pd.DataFrame.from_dict({'a': {0: 1, 1: 2}, 'b': {0: 3, 1: 3}})
print(df.to_dict())
Run Code Online (Sandbox Code Playgroud)

这导致可{'a': {0: 1, 1: 2}, 'b': {0: 3, 1: 3}}复制对象.

  • 谢谢,这太完美了! (3认同)
  • 这很有帮助,感谢分享。但我发现字典的大小是有限制的。我使用的 mtcars 只有 32x11,我剪掉了几列以使其工作。这对你来说合适吗? (2认同)