Python 错误:';系列';对象是可变的,因此不能对其进行散列

Python 错误:';系列';对象是可变的,因此不能对其进行散列,python,pandas,dataframe,typeerror,loc,Python,Pandas,Dataframe,Typeerror,Loc,嘿,伙计们,我需要一些关于处理熊猫数据帧的问题的帮助。代码如下: 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.', 'Re. Pre.', 'Im. Pre.'], axis=1, inplace=True)

嘿,伙计们,我需要一些关于处理熊猫数据帧的问题的帮助。代码如下:

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.', 'Re. Pre.', 'Im. Pre.'], axis=1, inplace=True)

if z != 0:
   df = df.loc(df['Z'] == z)
我在panda数据框中加载了一个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]

我得到了一个解决方案:df=df[df['Z']==Z],但有人能解释一下为什么另一种方法不起作用吗?对不起,我的答案不是你需要的?是的!但正如我所说,我得到了一个解决方案,从这一点上说,我更感兴趣的是我第一次尝试失败的原因。