我有一个约会时间列表,想要遮蔽所有星期天。我正在为时间跨度输入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 ='起作用。
答案 0 :(得分: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
会这样做)。在REPL环境中运行[1, 2, 3] > 322
。