这可能很简单,但我找不到解释,而且它一直发生在我身上。我正在尝试从Rate1E已结束的列中选择值,3.5并查看 Pandas DataFrameenergy中符合上述条件的选定行的其余行。我之前有人给了我一个答案,并简单地更改为文本如下:energy = energy.loc[energy[:, 'Rate1E'] >= 3.5]print(energy.loc[:, 'Rate1E'])但是,我再次发现自己遇到了错误:TypeError: unhashable type: 'slice'在线解决方案提示.loc就是答案。有人知道如何修复代码或更好地向我解释为什么我似乎总是得到那个错误。
2 回答

慕运维8079593
TA贡献1876条经验 获得超5个赞
你的语法不正确。你需要:
energy = energy.loc[energy['Rate1E'] >= 3.5]
或者:
energy = energy.loc[energy.loc[:, 'Rate1E'] >= 3.5]
关键点是energy.loc[:, 'Rate1E']
和energy['Rate1E']
是系列,后者是访问前者的便捷方式。
不幸的是,Pandas 文档没有为 指定精确允许的参数pd.DataFrame.__getitem__
,它df[]
是语法糖。最流行的用途是:
提供一个字符串来给出一个系列。
提供一个列表来给出一个数据框。
提供布尔系列来过滤您的数据框。

守着星空守着你
TA贡献1799条经验 获得超8个赞
你的要求energy[:, 'Rate1E']
是做一些与你期望不同的事情。你正在寻找一个.loc[]
电话。
energy = energy.loc[energy['Rate1E'] >= 3.5] print(energy['Rate1E'])
添加回答
举报
0/150
提交
取消