是否有一种方法可以在交互或脚本执行模式下扩大输出的显示?

具体来说,我在Pandas DataFrame上使用了describe()函数。当DataFrame是五列(标签)宽时,我得到了我想要的描述性统计数据。然而,如果DataFrame有更多的列,统计数据将被抑制,并返回如下内容:

>> Index: 8 entries, count to max
>> Data columns:
>> x1          8  non-null values
>> x2          8  non-null values
>> x3          8  non-null values
>> x4          8  non-null values
>> x5          8  non-null values
>> x6          8  non-null values
>> x7          8  non-null values

无论有6列还是7列,都给出“8”值。“8”指什么?

我已经尝试过将IDLE窗口拖大,以及增加“配置IDLE”宽度选项,但无济于事。


当前回答

你可以设置输出显示来匹配你当前的终端宽度:

pd.set_option('display.width', pd.util.terminal.get_terminal_size()[0])

其他回答

您可以使用这个自定义函数为Pandas数据框架显示内容。

def display_all(df):     # For any Dataframe df
   with pd.option_context('display.max_rows',1000): # Change number of rows accordingly
      with pd.option_context('display.max_columns',1000): # Change number of columns accordingly
          display(df)

display_all(df.head()) #传递这个函数到你的数据帧和voilà!

你不需要用pd。Set_option用于整个笔记本,只用于单个单元格。

这些答案对我都没用。其中一些确实会打印所有列,但看起来会很草率。所有的信息都在那里,但格式不正确。我正在使用Neovim内部的终端,所以我怀疑这是原因。

这个迷你函数确实是我需要的,只是改变df_data在两个地方,它是为你的dataframe名称(col_range被设置为熊猫自然显示,对我来说是5,但它可以更大或更小为你)。

import math
col_range = 5
for _ in range(int(math.ceil(len(df_data.columns)/col_range))):
    idx1 = _*col_range
    idx2 = idx1+col_range
    print(df_data.iloc[:, idx1:idx2].describe())

你也可以在循环中尝试:

for col in df.columns: 
    print(col) 

我只用了这三句话:

pd.set_option('display.max_columns', None)
pd.set_option('display.expand_frame_repr', False)
pd.set_option('max_colwidth', -1)

它适用于Anaconda, Python 3.6.5, Pandas 0.23.0和Visual Studio Code 1.26。

您可以使用print df.describe().to_string()强制它显示整个表。你可以像这样对任何数据帧使用to_string()。description的结果只是一个DataFrame本身。)

8是DataFrame中包含“description”的行数(因为describe计算8个统计值,最小值,最大值,平均值等)。