Pandas DataFrame 表格垂直滚动条

Posted

技术标签:

【中文标题】Pandas DataFrame 表格垂直滚动条【英文标题】:Pandas DataFrame Table Vertical Scrollbars 【发布时间】:2017-08-01 03:34:36 【问题描述】:

我有一个大的(垂直的)pandas 数据框,我想将其显示为带有滚动条的漂亮表格。我可以让它显示所有行的表格,但我无法显示滚动条。

def data(x):
    strData = strData[['Data1','Data2','Data3']]
    display(strData)

输出:没有垂直滚动条

【问题讨论】:

【参考方案1】:

不确定这是否是您的意思,但我想您需要将 max_rows 选项设置为 None,以便 pandas 不会限制显示的行数:

pd.set_option("display.max_rows", None)


更新

In [27]: 
##javascript
IPython.OutputArea.auto_scroll_threshold = 10;

In[28]:
def display_():    
    pd.set_option("display.max_rows", None)
    from IPython.core.display import display 
    display(df) #df must be defined up there

【讨论】:

这正是我所需要的。我已将其添加到代码中,但它仍然向我显示所有行并且没有滚动条。我尝试了 print(strData),只在函数中使用了 strData,但它不起作用。当它在函数内部时,它的行为会有所不同吗? 刚刚在函数内部进行了测试。这对我有用。 def display_(): pd.set_option("display.max_rows", None) from IPython.core.display import display display(df) 当我使用 print(strData) 时,数据不在一个漂亮的表中了。它只是显示为常规数据(没有表格大纲),行将是动态的,具体取决于文件的吨长度。它们可以从 30 行到 300 行。这就是我想为数据添加滚动条的原因。 30行还不足以触发python notebook的滚动条。您需要更改 auto_scrolling 的阈值。尝试更新的方法 由于某种原因,javascript 行给出了错误【参考方案2】:

另一个答案对我不起作用 - IPython.OutputArea 似乎不再存在(据我所知,至少在 VSCode 中并基于 IPython 代码)。子>

我设法通过为 DataFrame 生成 html 表和 putting that into a div, which can be made scrollable using CSS 的一些 hacky 解决方案使 DataFrame 可滚动。在这种情况下,我们真正需要做的就是将高度设置为某个像素值。

我们还可以将溢出设置为auto,将宽度设置为fit-content,这样滚动条就会出现在DataFrame旁边,而不是一直显示在窗口的右侧。

import pandas as pd
from IPython.display import display, HTML

df = pd.DataFrame([(i, i) for i in range (20)])

pd.set_option("display.max_rows", None)

# Puts the scrollbar next to the DataFrame
display(HTML("<div style='height: 200px; overflow: auto; width: fit-content'>" +
             df.style.render() +
             "</div>"))

# Puts the scrollbar on the right side of the window
display(HTML("<div style='height: 200px'>" + df.style.render() + "</div>"))

演示:

【讨论】:

【参考方案3】:

只需传递数据帧并观察魔法。

def table(df):
    import plotly.graph_objs as go
    fig = go.Figure(data=[go.Table(
    header=dict(values=list(df.columns),
                align='left'),
    cells=dict(values=[df[i] for i in df.columns],           
                align='left'))
    ])
    return fig

【讨论】:

您能否解释一下为什么在这种情况下 plotly 是一个很好的库,并可能显示它的外观截图? 事情是我在情节上很舒服。它提供了比 matplotlib 和 seaborn 更多的信息。休息也取决于用户是否可以使用其他库。

以上是关于Pandas DataFrame 表格垂直滚动条的主要内容,如果未能解决你的问题,请参考以下文章

如何判断滚动条滚到页面底部并执行事件

如何在 Pandas DataFrame 上计算滚动累积乘积

带有滚动窗口的 Pandas Dataframe 枢轴

Pandas DataFrame:多个组的滚动集联合聚合

在内置“滚动”之外对 Pandas Dataframe 进行滚动窗口操作的最佳方法?

pandas使用rolling函数计算dataframe指定数据列特定窗口下的滚动有效数值计数(rolling count)自定义指定滚动窗口的大小(window size)