我有一个数据框其中一列是字典,我在字典中得到了大量的项目,这导致了我的内存问题。解决方案是只从该字典中获取前10个条目。我已经有了代码,但它给出了一个错误:
TypeError: '<' not supported between instances of 'dict' and 'dict'
我做了一个示例代码来告诉你我的问题:
import pandas as pd
import datetime
res = pd.DataFrame([])
res_tmp = pd.DataFrame([])
d = {'club': ['A1', 'B1'], 'score': [3, 4]}
df = pd.DataFrame(data=d)
for index, row in df.iterrows():
total = int(row['score']) * -1
res_tmp = res_tmp.append({'today': str(datetime.datetime.now()), 'total': total}, ignore_index=True)
res = res.append({'club': row['club'], 'details': res_tmp.to_dict('dict')},ignore_index=True)
res['details'] = res['details'].apply(lambda y: (sorted(y.items(), key=lambda x: x[1]))[:1])
我做错了什么?注意:在示例中,我只有两行,这就是为什么我把top 1而不是top 10
谢谢!
正如错误消息告诉您的那样,字典没有定义值排序。如果要对字典进行排序,必须提供自己编写的函数来定义排序顺序。您提取了值,但是您还必须将字典转换为定义了<
的某种类型。例如:
key = lambda x: list(x[1].values())