次のようなデータセットがあります。
fruits = ["orange", "plum", "lime"]
data = [(random.choice(fruits),
random.randint(0,100),
random.randint(0,100)) for i in range(16)]
dframe = pd.DataFrame(data, columns=["fruit", "x", "y"])
wherefruit
にはいくつかの値しかありません。プロットで見たい果物の種類を選択できるように、選択ウィジェットが必要です。
私が現在持っている更新機能は次のとおりです。
source = bk.ColumnDataSource(dframe)
by_fruit = dframe.groupby('fruit')
def update(fruit):
grouped = by_fruit.get_group(fruit)
source.data['x'] = grouped['x']
source.data['y'] = grouped['y']
source.data['fruit'] = grouped['fruit']
source.push_notebook()
interact(update, fruit=fruits)
しかし、各列の値を調べて再割り当てすることは、より多くの列を取得するにつれて過度に冗長に見えます。列を省略すると、長さが異なり、位置がずれてしまうため、エラーが発生しやすくなります。
Pandas はスライスとさいの目切りが得意で、何かが足りない気がします。Series
の各列をColumnDataSource
同時に変更するより簡潔な方法は何ですか?