【发布时间】:2021-11-10 03:59:54
【问题描述】:
items = ['1', '2', '3']
for item in items:
df_list[item]= df.loc[file_df['Item'] == item]
这很好用。但是,如果我的项目列表是其他内容,例如:
items = [{'code': '1', 'other_needed_value': 1}, {'code': '2', 'other_needed_value': 2}, {'code': '3', 'other_needed_value': 3}]
for item in items:
code = item['code']
df_list[item]= df.loc[file_df['Item'] == code]
显然我正在将 file_df['Item'] 与一个字符串进行比较,但是我从 pandas 得到了这个错误
unhashable type: 'dict'
我应该如何解决这个问题?提前致谢。
【问题讨论】:
-
你的字典列表是不是叫
item或者这是一个错字?此外,最好放置完整的 Traceback 错误,这样我们就可以看到是哪一行导致了问题 -
抱歉,更改变量名时打错了。将编辑
-
问题不在于比较。问题是尝试使用
item作为字典键,而item本身就是dict。如果您打算使用code作为 dict 键,那么这只是一个错字。否则请参考链接的副本。 -
以后,您也应该先尝试debug您的代码,然后再询问。这首先要尝试理解错误消息;特别是那行代码的哪一部分导致错误。您可能会发现将这条线分成更小的部分很有帮助。例如,在这种情况下,您可能先将
df.loc[file_df['Item'] == code]分配给一个临时变量,然后再将其分配给df_list[item]。您会立即看到问题出在第二部分。