0

我有一个日期时间列表,想遮蔽所有的星期天。我正在输入一个pandas.DateTimeIndex时间跨度,它是一个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.array确实如此)。[1, 2, 3] > 322在 REPL 环境中 运行。

于 2013-04-19T01:46:08.807 回答