类型错误:不可散列的类型:“切片”pandas DataFrame 列

ged*_*133 3 python indexing series dataframe pandas

这可能很简单,但我找不到解释,而且这种情况经常发生在我身上。

我正在尝试从Rate1E结束的列中选择值,并查看 pandas DataFrame 中符合上述条件的选定行的3.5其余行。energy之前有人给过我答案,我简单地改为文字如下:

energy = energy.loc[energy[:, 'Rate1E'] >= 3.5]
print(energy.loc[:, 'Rate1E'])
Run Code Online (Sandbox Code Playgroud)

然而我再次发现自己犯了错误:

TypeError: unhashable type: 'slice'
Run Code Online (Sandbox Code Playgroud)

网上的解决方案建议.loc就是答案。有人知道如何修复代码或者更好地向我解释为什么我似乎总是遇到这个错误。

谢谢。

jpp*_*jpp 5

你的语法不正确。你需要:

energy = energy.loc[energy['Rate1E'] >= 3.5]
Run Code Online (Sandbox Code Playgroud)

或者:

energy = energy.loc[energy.loc[:, 'Rate1E'] >= 3.5]
Run Code Online (Sandbox Code Playgroud)

关键点是energy.loc[:, 'Rate1E']系列energy['Rate1E'],后者是访问前者的便捷方式。

不幸的是,Pandas 文档没有明确指定 的允许参数pd.DataFrame.__getitem__,这df[]是语法糖。最流行的用途是:

  • 提供一个字符串来给出一个系列。
  • 提供一个列表来给出数据框。
  • 提供一个布尔系列来过滤您的数据框。