私はCSVファイルから取り込まれたpandasデータフレームを使用しています。次に、Bokehを使用してそのデータフレームをColumnDataSourceに変換します。以下のように見える列データソースを使用すると、どのように行のインデックスを取得できますか?
:
dataFrame = pandas.read_csv('somefile.CSV')
source = ColumnDataSource(dataFrame)
今、私はすべての私のコラムを持っていることを、私は、行ベースの計算をしたいです。例えば
:私は3つの列があります。それが移入される可能性があります
x, y, colour
を:私はを検索するとき今
1, 2, blue
2, 5, red
1, 8, yellow
、私は、その行に、いくつかの関連した変数を変更したいですソースなので、どのように私はこれを行うことができます:
# how do i step through the source dictionary?
if source['colour'] == 'blue':
# how do I get the current index, which is the row number
# how do I change the x column value at the index(row) we retrieved
source['x' index] = 2
が
ありがとうをあなたがこれを使用して'colour'
列に
'blue'
の最初の値のインデックスを取得することができます全体ColumnDataSourceを反復を避けるために、代わりに
dataFrame = pandas.read_csv('somefile.csv')
source = ColumnDataSource(dataFrame)
for index, colour in enumerate(source.data['colour']):
if colour == 'blue':
source.data['x'][index] = 2
:あなたはデータを反復している場合
ありがとうございました。私はdataFrame.iloc [index]も取得できて、行を返します。誰かがこれを行うためのより速い方法を知っている場合は、上記の方法と私の方法の両方が大きなデータセットで非常に遅いのでお知らせください。 – cyclops
最初に(ColumnDataSourceに入る前に)変更を加えるだけであれば、pandas dataFrameでこれらの変更を行うことがほぼ確実に最速になります。 'df ['x']。loc [(df ['color'] == 'blue')] = 2'とすることもできます。大規模なデータセットであっても、これはまだ非常に高速です。 –