在 Jupyter Python Notebook 中显示所有数据框列
Posted
技术标签:
【中文标题】在 Jupyter Python Notebook 中显示所有数据框列【英文标题】:Display all dataframe columns in a Jupyter Python Notebook 【发布时间】:2018-04-11 20:02:45 【问题描述】:我想在 Jupyter Notebook 中显示数据框中的所有列。 Jupyter 显示了一些列并在最后一列添加点,如下图所示:
如何显示所有列?
【问题讨论】:
【参考方案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)
【讨论】:
以上是关于在 Jupyter Python Notebook 中显示所有数据框列的主要内容,如果未能解决你的问题,请参考以下文章