绘制条形图 - ValueError: DataFrame 的真值是不明确的。请使用 a.empty,a.bool(),a.item(),a.any() 或 a.all()。

3
我正在尝试从数据框绘制一个条形图,但是在最后一行中遇到了 ValueError。欢迎提供建议。谢谢!
以下是错误信息:
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

这是我的代码:

#Calculate sparsity per day
grouped_id = df_sample.set_index('id', drop=False, inplace=False)
grouped_id = grouped_id.groupby('id')

df = grouped_id['avg_sparsity'].agg(np.sum).to_frame()
df.reset_index(inplace=True)

df['avg_sparsity'] = df['avg_sparsity'].apply(lambda x: int(x)/unique_time_cnt)                                                         
df['color'] = df['id'].apply(lambda x: 'r' if x in h_ids else 'y' )
df['type'] = df['id'].apply(lambda x: 'h' if x in h_ids else 'c')
df['fid'] = df['id'].apply(lambda x: fid_map.get(x))

fig = plt.figure(figsize=(9,7), dpi=100)

plt.bar( left=df['fid'], height=df['avg_sparsity'], color=df['color'])

plt.bar(left=df['fid'].values, height=df['avg_sparsity'].values, color=df['color'].values) 这个怎么样? - jezrael
@jezrael 如果我更改代码,它会返回相同的错误。 - ejshin1
你确定最后一行返回错误吗?我的答案也不起作用吗? - jezrael
1个回答

2

我认为您需要通过values将列转换为numpy数组,并且颜色也要转换为list

plt.bar(left=df['fid'].values, 
        height=df['avg_sparsity'].values,
        color=df['color'].values.tolist())

示例:

df = pd.DataFrame({'fid' : [2,4,5],
                   'avg_sparsity' : [10,20,30],
                   'color':['r','y','y']})

print (df)                   
   avg_sparsity color  fid
0            10     r    2
1            20     y    4
2            30     y    5

plt.bar(left=df['fid'].values, 
        height=df['avg_sparsity'].values.tolist(), 
        color=df['color'].values.tolist())

graph


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接