es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Pandas: Comportamiento inesperado para la función apply con torch.tensor()

Me confunde el comportamiento de la función panda.apply(). Quiero convertir una columna que contiene una lista de int a una torch.tensor. Aquí hay un código de muestra que muestra el comportamiento:

df_test = pd.DataFrame([3,3,3], columns=['value'])
df_test.value = df_test.value.apply(lambda x: [y for y in range(x)])
print(df_test)

print(df_test.value.apply(lambda x: torch.tensor(x)))

print(df_test.value.apply(lambda x: x + [12]))

print(torch.tensor([1,2,3]))

Me hubiera esperado un tensor con tres elementos por fila, pero en cambio el apply crea una lista de tensors que contiene un elemento. Para hacer pruebas, agregué un ejemplo que agrega un elemento a la lista, para asegurarme de que x sea la lista en sí misma. Como puede ver, se comporta como se esperaba. ¿Alguien puede explicar el comportamiento?

¿Hay alguna solución alternativa? No quiero usar torch.tensor(df.values) ya que necesito aplicar la transformación tensor a múltiples columnas y quiero mantenerlos en el dataframe. ¡Gracias!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que la función panda.apply() está creando una lista de tensores que contienen un elemento para cada elemento de fila. Esto podría deberse a que la función panda.apply() está diseñada para aplicar una función a cada elemento de un dataframe, en lugar de a todo el dataframe.

    Como solución alternativa, podría utilizar la función torch.tensor() en el atributo df.values, lo que aplicará la transformación de tensor a todo el dataframe. Esto mantendrá el dataframe en su forma original, al tiempo que le permitirá aplicar la transformación de tensor a varias columnas.

Comments are closed.