这可能很简单,但我找不到解释,而且它总是在我身上发生。
我正在尝试从Rate1E
列中选择3.5
以上的值,并查看pandas DataFrame energy
中其余符合上述条件的行。我之前曾有人给我一个答案,只是更改为以下文本:
energy = energy.loc[energy[:, 'Rate1E'] >= 3.5]
print(energy.loc[:, 'Rate1E'])
但是我又一次发现了自己的错误:
TypeError: unhashable type: 'slice'
在线解决方案表明.loc
是答案。有人会知道如何修复代码,或者更好地向我解释为什么我总是会出现该错误。
谢谢。
答案 0 :(得分:3)
您的语法不正确。您需要:
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[]
是语法糖。最受欢迎的用途是:
答案 1 :(得分:0)
您对energy[:, 'Rate1E']
的呼叫正在做与您期望的不同的事情。您正在寻找.loc[]
通话。
energy = energy.loc[energy['Rate1E'] >= 3.5]
print(energy['Rate1E'])