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

具体来说,我在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.options.display.max_columns = 100

您可以在max_columns中根据需要指定列数。

其他回答

如果你想临时设置选项来显示一个大的数据帧,你可以使用option_context:

with pd.option_context('display.max_rows', None, 'display.max_columns', None):
    print (df)

退出with块时,选项值将自动恢复。

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

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

你可以简单地执行以下步骤,

您可以更改Pandas max_columns特性的选项,如下所示: 进口熊猫作为pd pd.options.display。Max_columns = 10 (这允许显示10个列,您可以根据需要更改。) 像这样,你可以改变行数,你需要显示如下(如果你需要改变最大行数): pd.options.display。Max_rows = 999 (这允许一次打印999行。)

如需更改Pandas的不同选项/设置,请参考文档。

这不是严格意义上的答案,但是让我们记住我们可以df.describe().transpose()或者df.head(n).transpose(),或者df.tail(n).transpose()。

我还发现,当标题是结构化的时,将它们作为列来阅读更容易:

header1_xxx,

header2_xxx,

header3_xxx,

我认为终端和应用程序处理垂直滚动更自然,如果这是必要的转置后。

标头通常比它们的值大,将它们全部放在一列(索引)中可以最大限度地减少它们对总表宽度的影响。

最后,其他的df描述也可以合并,这里有一个可能的想法:

def df_overview(df: pd.DataFrame, max_colwidth=25, head=3, tail=3):
    return(
        df.describe([0.5]).transpose()
        .merge(df.dtypes.rename('dtypes'), left_index=True, right_index=True)
        .merge(df.head(head).transpose(), left_index=True, right_index=True)
        .merge(df.tail(tail).transpose(), left_index=True, right_index=True)
        .to_string(max_colwidth=max_colwidth, float_format=lambda x: "{:.4G}".format(x))
    )

下面的行足以显示一个数据框架中的所有列。

pd.set_option('display.max_columns', None)