【问题标题】:Display all dataframe columns in a Jupyter Python Notebook在 Jupyter Python Notebook 中显示所有数据框列
【发布时间】:2018-04-11 20:02:45
【问题描述】:

我想在 Jupyter Notebook 中显示数据框中的所有列。 Jupyter 显示了一些列并在最后一列添加点,如下图所示:

如何显示所有列?

【问题讨论】:

    标签: python python-3.x dataframe jupyter-notebook


    【解决方案1】:

    尝试如下显示max_columns设置:

    import pandas as pd
    from IPython.display import display
    
    df = pd.read_csv("some_data.csv")
    pd.options.display.max_columns = None
    display(df)
    

    或者

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

    Pandas 0.11.0 向后

    这已被弃用,但在早于 0.11.0 的 Pandas 版本中,max_columns 设置指定如下:

    pd.set_printoptions(max_columns=500)
    

    【讨论】:

    • 如果要进行临时设置,可以使用例如with pd.option_context("display.max_rows", 10, "display.max_columns", 5):(见Getting and setting options)。
    【解决方案2】:

    用于大型(但不是太大)数据帧的 Python 3.x

    也许是因为我有旧版本的熊猫,但在 Jupyter 笔记本上这对我有用

    import pandas as pd
    from IPython.core.display import HTML
    
    df=pd.read_pickle('Data1')
    display(HTML(df.to_html()))
    

    【讨论】:

    • 试过了,但它破坏了我的 jupyter 会话内存不足。我的电脑有 SSD 和 8 GB RAM 内存...
    • @FLBKernel 它没有对我这样做,也许你的数据框比我的大得多。你的出路是什么?您是否尝试过另一种方法并为您工作?如果是这样,请分享您的知识。谢谢。
    • 我还没有找到任何方法,但我会尽快解决这个问题。是的,我的 Dataframe 可能更大,所以让我们指出这对于大型 Dataframe 是不推荐的
    • @FLBKernel 我的数据框也很大。但我不知道它可以大到什么程度。我会指出来的。谢谢!
    • 我的有 107.763 行和 15 列。我们可以确定 - 也许 - 超过 100k 行和 15 列这个答案是不推荐的。我喜欢“大(但不是太大)”的标题:)
    【解决方案3】:

    我知道这个问题有点老了,但以下问题在运行 pandas 0.22.0 和 Python 3 的 Jupyter Notebook 中对我有用:

    import pandas as pd
    pd.set_option('display.max_columns', <number of columns>)
    

    你也可以对行做同样的事情:

    pd.set_option('display.max_rows', <number of rows>)
    

    这样就省去了导入 IPython,pandas.set_option 文档中有更多选项:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.set_option.html

    【讨论】:

    • 如果事先不知道列数,可以在中使用None关键字。
    • 由于某种原因,pd.set_option 和 pd.options.display.max_columns = None 对我不起作用。只有使用 HTML 的解决方案才有效。我正在使用 Python 3.8.5.0、pandas 1.1.3 和 jupyter core=4.6.3 和 jupyter-notebook:6.1.4。知道为什么这些解决方案不起作用吗?
    【解决方案4】:

    我建议在上下文管理器中设置显示选项,以便它只影响单个输出。我通常更喜欢“漂亮”的 html 输出,并定义一个函数 force_show_all(df) 用于显示 DataFrame df

    from IPython.core.display import display, HTML
    
    def force_show_all(df):
        with pd.option_context('display.max_rows', None, 'display.max_columns', None, 'display.width', None):
            display(HTML(df.to_html()))
    
    # ... now when you're ready to fully display df:
    force_show_all(df)
    

    正如其他人所提到的,请谨慎仅在合理大小的数据框上调用它。

    【讨论】:

      【解决方案5】:

      您可以使用 pandas.set_option(),对于列,您可以指定这些选项中的任何一个

      pd.set_option("display.max_rows", 200)
      pd.set_option("display.max_columns", 100)
      pd.set_option("display.max_colwidth", 200)
      

      对于完整的打印列,您可以这样使用

      import pandas as pd
      pd.set_option('display.max_colwidth', -1)
      print(words.head())
      

      【讨论】:

        【解决方案6】:

        如果你想显示如下设置的所有行

        pd.options.display.max_rows = None
        

        如果你想显示所有列设置如下

        pd.options.display.max_columns = None
        

        【讨论】:

          【解决方案7】:

          这可以帮助你:

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

          【讨论】: