我有一个用于以下列方式进行绘图的组数据框(grouped_df
):
grouped_df[['col1','col2','col3']].sum().plot(kind='bar')
产生预期的图,其中包含所有三列的分组总和。但是,对于某些组,这些总和与其余组相比非常小,因此不容易在同一条形图中显示(见下图)。
我想为这些群体设置一个插图。试图,
grouped_df[['col1','col2','col3']].sum() < "cut-off"
返回这些组的布尔“列表”,但我不能再用它来切片/选择数据帧的一组子集。
当然,我可以生成两个组列表,然后遍历grouped_df
,但我认为这不是解决问题的明智方法。
为了清晰和一致,我提供了一个样本数据框,它将按grpcol
分组:
grpcol col1 col2 col3 comment
A 0.0505 0.0134 0.0534 foo
B 0.0505 0.0134 0.2034 bar
A 0.0505 0.0134 0.0134 bar
C 0.0505 0.0134 0.0331 None
D 0.0505 0.0134 0.0342 foo
E 0.0505 0.0134 0.2134 baz
F 0.0505 0.0134 0.0302 baz
D 0.0302 0.0134 0.2134 foo
D 0.0204 0.0134 0.0400 foo
G 0.0505 0.0134 0.2200 foo
H 0.0505 0.0134 0.1734 None
H 0.0505 0.0134 0.0073 None
答案 0 :(得分:2)
这是你在找什么?
def apply_cut_off(x1,x2,x3, CUT_OFF):
if x1 < CUT_OFF: return False
elif x2 < CUT_OFF: return False
elif x3 < CUT_OFF: return False
return True
grouped_sum = grouped_df[['col1','col2','col3']].sum()
cutoff_df = grouped_sum[ grouped_sum.apply(lambda x: apply_cut_off(x['col1'], x['col2'], x['col3'], YOUR_CUT_OFF), axis=1)]
这将返回一个数据框,其中至少有一个元素位于截止值之下,然后您可以随意使用它。
也许我没有得到要求