在 Jupyter Notebook 中输出 Pandas 数据帧时如何防止垂直滚动条?
How to prevent vertical scroll bars when outputting Pandas dataframe in Jupyter Notebook?
我有一个 Jupyter Notebook,当我 运行:
df.head()
生成的输出是一个包含很多很多列的数据框,因此会产生一个垂直滚动条。
如果我能够以 .html 或 .ipynb 文件的形式私下共享数据,那就没问题了,但我需要将其下载为静态 pdf。作为 pdf,这些数据框只是被截断了。
这是一本很长的笔记本,其中有好几处发生了这种情况。我能做些什么来解决这个问题?
谢谢
您是否尝试过在“单元格”选项中切换滚动?像这样:
可以对单个单元格和所有单元格进行操作,如您在我的屏幕截图中所见。
请说明:
- 很多列不应该为您提供垂直滚动条...很多行会,但 df.head() 默认情况下只会显示前 5 行。对于很多列,df.head() 显示前 10 列和后 10 列,没有滚动条(至少对我而言)。
编辑抱歉,刚刚意识到你必须使用:
pd.set_option('display.max_columns', 100)
'I need to download it as a static pdf.'
- 您是否正在使用浏览器的 print to pdf 来获取 jupyter notebook 的屏幕截图?如果是这样,有更好的方法从 python 中获取数据帧 table 的静态图片。 df.head() “...对于快速测试您的对象中是否包含正确类型的数据很有用。” - 来自文档。
编辑:正如您发现并在评论中所述,最简单的方法就是打印 df。
如果您想留在笔记本中并控制打印的列数(自动换行前最多 15 列)
# make up a wide empty datframe
col_names = ['a_' + str(x) for x in range(37)]
df = pd.DataFrame(columns=col_names, index=range(10))
section_width = 10 # set the number of columns you want to print - not that more than 15
for section_no in range(int(df.shape[1] / section_width + 1)) :
print(df.iloc[0:5, section_no * section_width : (section_no + 1) * section_width])
# if you want more or less than 5 rows then adust the numbers in .iloc[0:5]
无论如何,如果您能向我们提供更多关于您想要实现的目标的详细信息,我们可能会更好地提供帮助 - Goodluck
我有一个 Jupyter Notebook,当我 运行:
df.head()
生成的输出是一个包含很多很多列的数据框,因此会产生一个垂直滚动条。
如果我能够以 .html 或 .ipynb 文件的形式私下共享数据,那就没问题了,但我需要将其下载为静态 pdf。作为 pdf,这些数据框只是被截断了。
这是一本很长的笔记本,其中有好几处发生了这种情况。我能做些什么来解决这个问题?
谢谢
您是否尝试过在“单元格”选项中切换滚动?像这样:
可以对单个单元格和所有单元格进行操作,如您在我的屏幕截图中所见。
请说明:
- 很多列不应该为您提供垂直滚动条...很多行会,但 df.head() 默认情况下只会显示前 5 行。对于很多列,df.head() 显示前 10 列和后 10 列,没有滚动条(至少对我而言)。
编辑抱歉,刚刚意识到你必须使用:
pd.set_option('display.max_columns', 100)
'I need to download it as a static pdf.'
- 您是否正在使用浏览器的 print to pdf 来获取 jupyter notebook 的屏幕截图?如果是这样,有更好的方法从 python 中获取数据帧 table 的静态图片。 df.head() “...对于快速测试您的对象中是否包含正确类型的数据很有用。” - 来自文档。
编辑:正如您发现并在评论中所述,最简单的方法就是打印 df。
如果您想留在笔记本中并控制打印的列数(自动换行前最多 15 列)
# make up a wide empty datframe
col_names = ['a_' + str(x) for x in range(37)]
df = pd.DataFrame(columns=col_names, index=range(10))
section_width = 10 # set the number of columns you want to print - not that more than 15
for section_no in range(int(df.shape[1] / section_width + 1)) :
print(df.iloc[0:5, section_no * section_width : (section_no + 1) * section_width])
# if you want more or less than 5 rows then adust the numbers in .iloc[0:5]
无论如何,如果您能向我们提供更多关于您想要实现的目标的详细信息,我们可能会更好地提供帮助 - Goodluck