假设我有这个数据框
d = { 'Path' : ['abc', 'abc', 'ghi','ghi', 'jkl','jkl'],
'Detail' : ['foo', 'bar', 'bar','foo','foo','foo'],
'Program': ['prog1','prog1','prog1','prog2','prog3','prog3'],
'Value' : [30, 20, 10, 40, 40, 50],
'Field' : [50, 70, 10, 20, 30, 30] }
df = DataFrame(d)
df.set_index(['Path', 'Detail'], inplace=True)
df
Field Program Value
Path Detail
abc foo 50 prog1 30
bar 70 prog1 20
ghi bar 10 prog1 10
foo 20 prog2 40
jkl foo 30 prog3 40
foo 30 prog3 50
我可以按任何列对其进行分组和排序...
df_count = df.groupby('Program')
df_count.apply(lambda x: x.sort())
Program Path Detail Field Program Value
prog1 abc foo 50 prog1 30
ghi foo 20 prog1 40
jkl bar 10 prog1 30
prog2 abc bar 70 prog2 20
prog3 ghi foo 10 prog3 60
jkl foo 30 prog3 50
但我真正想要的是按数量对程序进行排序
df['Program'].value_counts()
prog1 3
prog3 2
prog2 1
dtype: int64
就像是
df_count.apply(lambda x: x.sort('Programs'.value_counts()))
最终目标是将其绘制成使条形按升序或降序排列。我怎样才能做到这一点?