Python 为dataframe中与其他列相关的列编制索引,并

Python 为dataframe中与其他列相关的列编制索引,并,python,dataframe,indexing,widget,Python,Dataframe,Indexing,Widget,我提供了这个数据框, 如你们所见,我有3个索引章节、副索引、段落索引和Sentindex句子索引,我有70个章节、1699个段落和6999个句子 所以每一个都是从0或1开始的,问题是我想制作一个小部件来调用一个放在章节特定段落中的特定句子。像这样的 而是在特定章节的特定段落中提取特定的句子 我想我应该有另一个索引,比如chapparsant,是全维甚至多维索引的缩写,它显示了这个句子的确切位置 你知道我如何使用ipywidget提供吗 这个问题是因为我们不知道每一章有多少段落,也不知道每一

我提供了这个数据框,

如你们所见,我有3个索引章节、副索引、段落索引和Sentindex句子索引,我有70个章节、1699个段落和6999个句子

所以每一个都是从0或1开始的,问题是我想制作一个小部件来调用一个放在章节特定段落中的特定句子。像这样的

而是在特定章节的特定段落中提取特定的句子

我想我应该有另一个索引,比如chapparsant,是全维甚至多维索引的缩写,它显示了这个句子的确切位置

你知道我如何使用ipywidget提供吗

这个问题是因为我们不知道每一章有多少段落,也不知道每一段落有多少段落,我们也不知道索引从哪个数字开始,大多数时候我们没有结果

其目的是采用这种方法或定义一个新的索引,通过改变工具栏按钮,我们总是有一个独特的句子

例如,这里我有一个结果:

但当我换成这个的时候:

我没有任何结果,原因很明显,因为我们没有任何索引1-2-1,因为在第1章第2段中,索引2:Sentindex从2开始

我看到的一个解决方案是一个多维数据帧的完整定义,但我需要一些更简单的东西,我可以使用ipywidget


非常感谢

我确信有一个更简单的解决方案,但我想这是可行的

import pandas as pd

data = [
dict(Chapter=0, ParaIndex=0, SentIndex=0, content="0"),
dict(Chapter=1, ParaIndex=1, SentIndex=1, content="a"),
dict(Chapter=1, ParaIndex=1, SentIndex=2, content="b"),
dict(Chapter=2, ParaIndex=2, SentIndex=3, content="c"),
dict(Chapter=2, ParaIndex=2, SentIndex=4, content="d"),
dict(Chapter=2, ParaIndex=3, SentIndex=5, content="e"),
dict(Chapter=3, ParaIndex=4, SentIndex=6, content="f"),
    ]


df = pd.DataFrame(data)
编辑: 如果希望滑块仅在有效范围内,可以为interact decorator定义IntSliders:

chapter_slider = widgets.IntSlider(min=0, max=max(df.Chapter.unique()), step=1, value=0)
paragraph_slider = widgets.IntSlider(min=0, max=1, step=1, value=0)
sentence_slider = widgets.IntSlider(min=0, max=1, step=1, value=0)


@interact(target_chapter=chapter_slider, target_paragraph=paragraph_slider, target_sentence=sentence_slider)
现在,您必须检查showbyindex函数中段落/句子的有效数量,并相应地设置滑块值/max

if(...):
    paragraph_slider.max = ...
...

那么你真的不在乎指数了?你只想要第m章第n段的第i句话?没错!第M章第n段od和我的一句话:最后我想通过那个小部件来选择它。有什么想法吗?@SyntaxError许多tnx通过更改工具栏按钮,我们总是有一个独特的句子,因此名称show\u articles\u more\u不正确。。。对吗?哦,对不起……你说得对……谢谢你的回答,都是从零开始的,但第一章是从1开始的。不幸的是,它不起作用。。它说单位置索引器超出了范围,而且…它不起作用,但是定义子数据帧的想法看起来是正确的…但是它现在不起作用了。。。例如,如果第1章只有一个段落,而你想得到第二个段落,它就不起作用了。课程的句子和章节也是一样,我知道,实际上这是我的问题,因为我想用这个小部件浏览句子。我想我需要定义一个新的索引,或者…我想写一个程序,每个章节只通过正确数量的段落索引,每个段落都通过正确的句子索引有什么想法我真的不知道
chapter_slider = widgets.IntSlider(min=0, max=max(df.Chapter.unique()), step=1, value=0)
paragraph_slider = widgets.IntSlider(min=0, max=1, step=1, value=0)
sentence_slider = widgets.IntSlider(min=0, max=1, step=1, value=0)


@interact(target_chapter=chapter_slider, target_paragraph=paragraph_slider, target_sentence=sentence_slider)
if(...):
    paragraph_slider.max = ...
...