我是新手,正在使用Bokeh 0.10.0,跟随此example。
我在pandas df中引入缺失值
# Swap a real numeric value to missing
data['Jan'][0] = np.nan
行后
data = data.set_index('Year')
运行时,会出错
Traceback (most recent call last):
File "C:\Users\KubiK\Desktop\Try2.py", line 36, in <module>
color.append(colors[min(int(monthly_rate)-2, 8)])
ValueError: cannot convert float NaN to integer
我们如何告诉Bokeh跳过那个缺失值?
答案 0 :(得分:1)
我看到两种可能的选择。
[选项1]事先在pandas DataFrame select
o.customer,
o.product,
ots.updated_at,
os.name
from orders o
inner join
(
select
s.`order`,
s.`status`,
s.updated_at
from order_to_statuses s
inner join
(
select
`order`,
max(updated_at) as updated_at
from order_to_statuses
group by `order`
) m
on s.`order` = m.`order`
and s.updated_at = m.updated_at
) ots
on o.Id = ots.`order`
inner join order_states os
on ots.`status` = os.id;
上进行替换并处理for循环中的颜色分配:
data
[选项2]使用data.replace([np.nan], -1, inplace=True)
for y in years:
for m in months:
month.append(m)
year.append(y)
monthly_rate = data[m][y]
if monthly_rate == -1:
color.append('#FFFFFF')
rate.append(monthly_rate)
color.append(colors[min(int(monthly_rate)-2, 8)])
处理for循环中的np.nan
。
if
注意我分配了颜色for y in years:
for m in months:
month.append(m)
year.append(y)
monthly_rate = data[m][y]
if np.isnan(monthly_rate):
rate.append(-1)
color.append('#FFFFFF')
else:
rate.append(monthly_rate)
color.append(colors[min(int(monthly_rate)-2, 8)])
和#FFFFFF
的值,但您可以将其更改为您想要的颜色。