我有条件地绘制pandas数据帧。
我们假设我们有一个4 * 4的数据框columns=['A', 'B', 'C', 'D']
,
indexes=[0, 1, 2, 3]
。我们假设我们做df.plot.bar()
。对于每行中的数据,我想突出显示column C >= column A + column B
中数据的条形图。对Column D
中的数据执行相同操作。
最终结果应突出显示满足上述要求的条形为红色,其余为白色。
有谁知道怎么做?
答案 0 :(得分:1)
df = pd.DataFrame([
[1, 2, 4, 2],
[4, 3, 5, 9],
[3, 1, 0, 1],
[2, 6, 9, 2]
], columns=list('ABCD'))
condAB = pd.DataFrame(False, df.index, ['A', 'B'])
condCD = df[['C', 'D']].ge(df[['A', 'B']].sum(1), 0)
cond = pd.concat([condAB, condCD], axis=1).stack().tolist()
colors = np.where(cond, 'red', 'white')
df.plot.bar(color=colors, legend=False)