【问题标题】:Insert checkbox in panda dataframe在熊猫数据框中插入复选框
【发布时间】:2020-01-14 14:19:04
【问题描述】:

我想显示一个pandas dataframe,其中在每一行的开头都有一个Checkbox (ipywidget) 以了解用户正在选择哪一行。

我使用以下代码对Button 进行了第一次试用

import pandas as pd
from IPython.display import display, HTML
from ipywidgets import Button, HBox, VBox,widgets
import ipywidgets
from ipyleaflet import Map

mS2 = Map(center=(40.4, -3.7), zoom=6)

offlineS2 = ['true', 'false']
nameS2 = ['a','b']

df = pd.DataFrame({'Name': nameS2,'Offile': offlineS2})

# ideally I would need Checkbox not Button
button0 = widgets.Button(description='Click to display')
button1 = widgets.Button()         
button2 = widgets.Button(description='Select')
dfW = ipywidgets.HTML(df.style.set_table_attributes('class="table"').render())

testup = HBox([VBox([button0,button1,button2]),dfW])
display(VBox([testup,mS2]))

输出如下所示:

但是,当我将代码widgets.Button 更改为widgets.Checkbox 时,虽然显示了,但复选框和数据框之间的距离太大。为什么会这样?

编辑

使用

`button1 = widgets.Button(indent=False)`

【问题讨论】:

  • 自从我上次使用小部件以来已经有一段时间了,但我很确定有一个选项可以将复选框移动到任何方向
  • 如果您仍有问题,请查看:github.com/quantopian/qgrid。否则,只需使用缩进删除margin-right。我将发布一个示例解决方案。

标签: python pandas ipython ipywidgets


【解决方案1】:

默认情况下:indent 设置为 True。将其更改为 False 和 Voilà。

试试这个:

button0 = widgets.Checkbox(
    description="Click to display", 
    value=True,
    indent=False
)
button1 = widgets.Checkbox(
    description="", 
    value=True,
    indent=False
)
button2 = widgets.Checkbox(
    description="Select", 
    value=True,
    indent=False
)

编辑:

尝试为您的 HBox 手动设置边距和填充。

verticalItems = VBox([button0,button1,button2], layout=Layout(margin='0 0 0 0', padding='0 0 0 0'))
fullLayout = HBox([verticalItems, dfW], layout=Layout(margin='0 0 0 0', padding='0 0 0 0'))

display(VBox([fullLayout ,mS2]))

【讨论】:

  • 我添加了一张新图片来显示这种情况下的显示。它将复选框向左移动,但我想让它靠近dataframe。我正在检查这篇文章github.com/jupyter-widgets/ipywidgets/issues/2221,但不确定它是否适用@Joel
  • ipywidgets.readthedocs.io/en/latest/examples/… 我假设您只在最新图片的第一个上添加了 indent=False 。另外,试试to_html() 而不是render() 编辑:我现在看到你的评论了。
  • to_html 我得到AttributeError: 'Styler' object has no attribute 'to_html'
  • 查看我更新的答案,看看是否有什么不同。
  • 获得与我的第二张图片相同的显示
猜你喜欢
  • 1970-01-01
  • 2019-07-08
  • 2021-10-06
  • 2019-05-01
  • 2019-01-25
  • 2020-12-23
  • 2021-06-04
  • 2020-02-13
相关资源
最近更新 更多