PyCharm:如何在“运行”窗口中显示数据框的所有列而不换行或截断?

Fhy*_*nir 6 truncation word-wrap dataframe pycharm

我面临的问题与我如何强制“运行”窗口显示给定 Pandas 数据框的所有列有关,而不使其适应窗口的大小(这对我来说是通过截断列名,或通过不显示所有列)。

换句话说,我需要将数据显示在它们预期的行上,如果窗口视图太小而无法显示所有列,则应该出现一个水平条(像往常一样)以允许我轻松遍历数据。

背景: 我处理了一些数据,其中我自动选择并以表格格式将数据的不同部分存储在特定的“.h5”文件中。这是使用 Pandas 数据帧和“to_hdf”函数完成的。然后我读了它并得到以下信息:在“运行”输出窗口中查看

数据集由 35 列(不包括时间列)组成,每列有 x 个条目。对于这篇文章,他们被随意命名,以说明问题。

注意:

  • File -> Settings -> Editor -> General在“软包装”下禁用软包装
  • 我刚刚执行了 Python 3.7 和 PyCharm 社区版 2018.3.5 的全新安装(最初 2019.1 版本存在一些问题),并从我家的计算机中的 PyCharm 导出文件中导入了一些 PyCharm 设置
  • 水平滚动条似乎被禁用。在任何时候都不会出现。这很奇怪,看到我回家的电脑给了我水平滚动条
  • 由于“运行”窗口中的输出在运行脚本之前根据窗口大小进行换行和截断(即更小与全屏窗口),一旦其他效果被移除,水平滚动条很可能会重新激活

我想完成三件事:

  1. 显示数据框的所有列,同时允许我使用水平滚动条滚动这些列(目前似乎已禁用),这意味着:
  2. 列名没有换行,请参见上图中的标记 (1) 和 (2)。由于“运行”窗口的大小限制,没有截断/删除列,请参见同一图像中的标记 (3)。
  3. 次要任务:目前,“时间”列(设置为行索引)在此打印输出中仅打印为日期,同时还存储小时、分钟和秒。希望这会在 1. 和 2. 修复后自动修复(我的其他表格显示完整日期 + 小时等没有问题)。

这是我尝试过的

我使用了以下两行来稍微改进打印输出:

pd.set_option('display.max_columns', 20)
pd.set_option('display.width', 2000)
Run Code Online (Sandbox Code Playgroud)

这给出了一个整洁的输出,见下文: 这个

但是,并非所有 35 列都显示出来,请参见标记 (1)/“...” 分数。当我将允许的列数从 20 增加到 40 时pd.set_option('display.max_columns', 40),会发生这种情况:发生

看来我们又回到了原点。幸运的是,其中一种负面影响消失了,即截断效应,即。我认为删除了显示的列。

然而,列的换行仍然发生,这样现在行的数量增加了一倍,而应该可以在自己的行上显示所有内容,同时自动显示一个水平条,让用户遍历这些数据。

我还查看了此链接以了解更多使用 Pandas 的 set_option 方法的选项。pd.set_option('expand_frame_repr', True)除了我使用过的其他线路之外,我还发现并尝试了这条线路。但在我的情况下它没有改变任何东西。

有任何想法吗?

小智 7

假设您要打印具有 15 行的 X。

一个对我有用的简单命令是:

print(X.to_string())

Run Code Online (Sandbox Code Playgroud)


JQT*_*QTs 6

因此,经过大量研究,我找到了两种方法来获取迄今为止用于这项工作的数据库中的列标题(2152 行,119 列)。

第一种方法是,嗯,将它们调用到一个像水平一样的列表。我的数据框= df

print(df.columns.tolist())
Run Code Online (Sandbox Code Playgroud)

第二种方法是不仅在 pycharms 中或任何地方显示整个数据库。它将完全删除截断,但我必须使用两种类型的最大行列方面,这很奇怪。没有其他办法,它自己对我有用。

pd.options.display.width= None
pd.options.display.max_columns= None
pd.set_option('display.max_rows', 3000)
pd.set_option('display.max_columns', 3000)

Then just print your dataframe 
print(df)
Run Code Online (Sandbox Code Playgroud)

通过这 4 行代码,我可以打开任何少于 3000 列/行的数据库并查看所有内容。对此非常高兴,但有点困惑为什么 pd.options 或 pd.set_option 不能单独工作。

任何快乐编码的人。


run*_*out 1

我在程序末尾创建了一个最终变量,例如...end = 'end'

然后我在那里放置一个调试断点,并在调试模式下运行程序。它将在最后停止,您可以在调试模式下打开数据帧,瞧...您可以使用颜色编码在整个数据帧中移动,并且可以在调试模式下使用其他选项。