在PyCharm内置控制台中获取更宽的输出

68

我相对较新地使用PyCharm IDE,并且一直无法找到在内置控制台会话中更好地塑造输出的方法。我通常使用相当宽的数据框架进行工作,这些框架可以轻松地适应我的监视器,但显示器比需要的更早地切割和换行它们。

有人知道如何更改此行为以充分利用屏幕的全部宽度吗?

Screenshot

我想要防止它在仅有几列后换行(例如,“ReadmitRate”列应立即位于“SNFDaysPerSNFCase”右侧)


我不理解这个问题。对我来说,控制台窗口跨越整个屏幕宽度。你能添加一张截图吗? - TidB
谢谢。但就我所见,这与控制台宽度无关。你是否多次调用了 print?如果是,你可以将 end 参数设置为 "",从而抑制标准换行符。 - TidB
5个回答

74

对于我来说,在pycharm中仅设置'display.width'是不够的,它仍然以截断形式显示。

但是,加上选项pd.set_option("display.max_columns", 10)和显示宽度一起工作,我能够在“运行”输出中看到整个数据框。

总之:

import pandas as pd    
pd.set_option('display.width', 400)
pd.set_option('display.max_columns', 10)

7
这是唯一完全有效的答案。感谢 @Idodo! - sashaostr
2
实际上,这些是解决问题的最终选项: pd.set_option('display.max_columns', None) pd.set_option('display.expand_frame_repr', False) pd.set_option('max_colwidth', -1) - sashaostr
将最大列作为选项添加对我很有用。谢谢@Idodo。 - Amit
@alexanderostrikov的回答效果更好。感谢你们两个终于为我修复了这个烦人的问题。 - Nathaniel Rink
1
我也需要这样做才能使事情正常运作。display.width 不起作用,让我很苦恼。感谢 @ldodo。 - xbot

70

我之前错误地认为这个问题是PyCharm上的一个设置或偏好可以解决的,但实际上与控制台会话本身有关。控制台尝试自动检测显示区域的宽度,但当失败时,它将默认为80个字符。可以使用以下方式覆盖此行为:

import pandas as pd
desired_width = 320    
pd.set_option('display.width', desired_width)

你当然可以将desired_width设置为你的显示器所容忍的任何大小。

感谢@TidB的建议,使我意识到我的初始关注点并不正确。


还必须为NumPy数组设置宽度,请参见我的答案。 - Contango
似乎PyCharm控制台仍然有问题,因为在Xfce终端和Terminator中输出宽度是正确的。我怀疑明确设置Pandas显示宽度可能会覆盖其他Linux终端的默认行为。 - Sussch

23

@mattvivier的答案在打印Pandas数据框时很有效(谢谢!)。

但是,如果您要打印NumPy数组,还需要设置np.set_printoptions

import pandas as pd
import numpy as np
desired_width = 320
pd.set_option('display.width', desired_width)
np.set_printoptions(linewidth=desired_width)

查看NumPy和set_printoptions的文档


5
def pd_set_df_view_options(max_rows=1000, max_columns=350, display_width=320):

    # Show more than 10 or 20 rows when a dataframe comes back.
    pd.set_option('display.max_rows', max_rows) 
    # Columns displayed in debug view
    pd.set_option('display.max_columns', max_columns)

    pd.set_option('display.width', display_width)

# run
pd_set_df_view_options(max_rows=1000, max_columns=350, display_width=320)

1

补充Contago的答案:

通用设置

import numpy as np
import pandas as pd


desired_width = 320

## dataframe ##
# increase dataframe print area
pd.set_option('display.width', desired_width)

# increase no. of df columns displayed
pd.set_option('display.max_columns', n)


## numpy array ##
# increase numpy array print area
np.set_printoptions(linewidth = desired_width)



上下文特定(临时)
# dataframe
with pd.option_context('display.max_columns', 20,
                       'display.width', 320):
    print(df)

# numpy array
with np.printoptions(linewidth=320):
    print(np.array(df))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接