繁体   English   中英

Python:Pandas Dataframe AttributeError: 'numpy.ndarray' 对象没有属性 'fillna'

[英]Python: Pandas Dataframe AttributeError: 'numpy.ndarray' object has no attribute 'fillna'

由于我正在创建一个数据框,我不明白为什么会出现数组错误。

M2 = df.groupby(['song_id', 'user_id']).rating.mean().unstack()
M2 = np.maximum(-1, (M - 3).fillna(0) / 2.)  # scale to -1..+1  (treat "0" scores as "1" scores)
M2.head(2)

AttributeError: 'numpy.ndarray' object has no attribute 'fillna'

(M - 3)被解释为numpy.ndarray 这意味着M在某处定义为numpy.ndarray 通过运行来测试它:

print type(M)

您正在 numpy 数组上调用.fillna()方法。 并且numpy数组没有定义该方法。

您可以将numpy数组转换为pandas.DataFrame ,然后应用.fillna()方法。

您的代码目前不完整,因此很难确定M导致错误的原因。 可能有几个原因:

  1. 你有一个错字, (M - 3)应该是(M2 - 3)

     M2 = df.groupby(['song_id', 'user_id']).rating.mean().unstack() M2 = np.maximum(-1, (M2 - 3).fillna(0) / 2.) # scale to -1..+1 (treat "0" scores as "1" scores) M2.head(2)
  2. 您需要在代码中的其他地方将M定义/转换为pandas.DataFrame

     # With out seeing this part of the code, no one can really help you M = pd.DataFrame(...) # ... # ... M2 = df.groupby(['song_id', 'user_id']).rating.mean().unstack() M2 = np.maximum(-1, (M - 3).fillna(0) / 2.) # scale to -1..+1 (treat "0" scores as "1" scores) M2.head(2)
  3. 您可以在使用之前将其转换为pandas.DataFrame

     M2 = df.groupby(['song_id', 'user_id']).rating.mean().unstack() M2 = np.maximum(-1, (pd.DataFrame(M) - 3).fillna(0) / 2.) # scale to -1..+1 (treat "0" scores as "1" scores) M2.head(2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM