df的字典:
years = [2017, 2018, 2019]
dfcols = ['Count', 'Amount']
dataframedict = {'CatA': pd.DataFrame(data=[[1, 5], [2, 6], [3, 7]], columns=dfcols, index=years),
'CatB': pd.DataFrame(data=[[4, 8], [5, 9], [6, 19]], columns=dfcols, index=years),
'CatC': pd.DataFrame(data=[[7,11], [8,12], [9,13]], columns=dfcols, index=years)}
需要一列dict键,在2019年按“金额”降序排列,因此['CatB','CatC','CatA']
试过了,下面的这个变化:
for k in sorted(dataframedict, key=lambda df: df.Amount[-1], reverse=True):
print(k)
出现错误: AttributeError: 'str' object has no attribute 'Amount'
谢谢
您可以将字典转换为元组的排序列表:
for k, v in sorted(dataframedict.items(), key=lambda x: x[1].Amount.iloc[-1], reverse=True):
print(k)
输出:
CatB
CatC
CatA
请注意,我要传递.items()
给sorted
。每个是长度为2的元组(x[0]
是键,x[1]
是value / df)。
现在,关于您的错误:当您按顺序传递字典时,将考虑字典的键:
>>> a = {1: "ad", 0: "ads"}
>>> sorted(a, key=lambda x: x)
[0, 1]
因此,您正在传递字符串 lambda
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句