熊猫位置错误:“系列”对象是可变的,因此不能进行散列

问题描述

嘿,我需要一些有关处理熊猫数据帧的问题的帮助。这是代码

df.drop(df.index[0],inplace=True)
df.columns = ['Mic. No.','X','Y','Z','Re. Pre.','Im. Pre.']
df['Pre'] = df['Re. Pre.'] + df['Im. Pre.'] * 1j
df.drop(['Mic. No.','Im. Pre.'],axis=1,inplace=True)

if z != 0:
   df = df.loc(df['Z'] == z)

我在熊猫数据框中加载了一个Excel工作表。现在,在进行一些预处理之后,数据帧的格式如下:

          X         Y     Z                       Pre
  1      0.16      0.16  0.05   (1.0048704-0.51310315j)
  2      0.16     -0.16  0.05   (0.24814222-1.6094971j)
  3     -0.16      0.16  0.05   (0.24815122-1.6094059j)
  4     -0.16     -0.16  0.05   (1.0048704-0.51310315j)
  5 -0.154993  0.154993  0.05  (-0.13939651-1.7231593j)

现在我要删除数据帧中的所有列,但在“ Z”列中没有值z。我收到错误消息:“ TypeError:'Series'对象是可变的,因此无法进行哈希处理”。我不知道该怎么办,因为我怎么看它就像熊猫纪录片中的一样.https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.loc.html:

df.loc[df['shield'] > 6]
               max_speed  shield
 sidewinder          7       8

请帮助我。

谢谢!

解决方法

您也可以使用lambda表达式来做到这一点:

df = df[lambda x: x['Z'] == z]
,

您可以将方括号与 df.loc 一起使用:

df = df.loc[df['Z'] == z]