Ya que estoy creando un dataframe, no entiendo por qué estoy recibiendo una matriz de error.

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'
  • ¿Qué es M define como?
InformationsquelleAutor jeangelj | 2016-06-03

2 Comentarios

  1. 0

    (M - 3) es llegar a interpretarse como un numpy.ndarray. Esto implica que M se define en algún lugar como una numpy.ndarray. Prueba ejecutando:

    print type(M)
  2. 0

    El código no es completa en el momento, por lo que es difícil fijar el punto de por qué M está provocando un error. Podría haber un par de razones:

    1. Tiene un error tipográfico y (M - 3) debe ser (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. Es necesario definir/convertir M como pandas.DataFrame en alguna otra parte del código

      # 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. Podría convertir a un pandas.DataFrame justo antes de usarlo.

      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)

Dejar respuesta

Please enter your comment!
Please enter your name here