0

日時のリストがあり、すべての日曜日をシェーディングしたいと考えています。オブジェクトpandas.DateTimeIndexのリストである for timespan を入力していますnp.datetime64

def ShadeSunday(subplot,timespan):
    timelist = [date2num(time) for time in timespan]
    dayofweek = [int(datetime.date.weekday(time.to_datetime())) for time in timespan]
    collection = collections.BrokenBarHCollection.span_where(Weekdates, ymin=0, ymax=80000, where=dayofweek>5, facecolor='b', alpha='.05')
    subplot.add_collection(collection)

datetime.date.weekdayは整数 (例: 日曜日の場合は 6) を返すため、時刻の x 値リストと、対応する曜日の整数値のリストがあります。BrokenBarHCollection.span_where型エラーをスローします:

"TypeError: 'bool' object is not iterable" for the arguement 'where=dayofweek>5'

いくつかの例を調べましたが、「where=」を機能させる方法がわかりません。

4

1 に答える 1

0

これにより、発生しているエラーが修正されるはずです(入力を知らずに投稿したコードをテストできないため、わかりにくいです)

def ShadeSunday(subplot,timespan):
    timelist = [date2num(time) for time in timespan]
    dayofweek_bool = [int(datetime.date.weekday(time.to_datetime())) > 5 for time in timespan]
    collection = collections.BrokenBarHCollection.span_where(Weekdates, ymin=0, ymax=80000, where=dayofweek_bool, facecolor='b', alpha='.05')
    subplot.add_collection(collection)

ここでの問題は、リストがブール値の比較をブロードキャストしないことです (ただし、numpy.arrays はブロードキャストします)。[1, 2, 3] > 322REPL 環境で 実行します。

于 2013-04-19T01:46:08.807 に答える