Este es el inicio y los valores devueltos de la función que usé para obtener algunos valores:

def gal_uvw(distance=None, lsr=None, ra=None, dec=None, pmra=None, pmdec=None, vrad=None, plx=None):

    return (u,v,w)

Usé valores de columna de un marco de datos (df) como variables de esta función y obtuve una lista de valores u, v y w devueltos.

def gal_uvw(distance=None, lsr=None, ra=df['Col1'], dec=df['Col2'],
            pmra=df['Col3'], pmdec=df['Col4'], vrad=df['Col5'], plx=None)

Output:(1       0.076253
        2      43.303953
              ...
        506   -51.194802

        1      -8.192123
        2     -47.063398
              ...
        506   -22.488182)

¿Cómo obtengo estas listas de valores u, v y w y las agrego al df que usé para trabajar la función? Cada grupo de números sería una nueva columna, por lo que tendría:

df['U']=u
df['V']=v
df['W']=w
0
Augusto Baldo 27 ago. 2020 a las 00:53

1 respuesta

La mejor respuesta

Debería poder asignarlo directamente desde variables desempaquetadas siempre que la longitud de u, v y w sea la misma que su marco de datos.

import pandas as pd

def foo():
    return (0, 9, 8, 7, 6), (0, 91, 81, 71, 61), (0, 92, 82, 72, 62)

df = pd.DataFrame({'A': [1, 2, 3, 4, 5]})

u, v, w = foo()

df['u'] = u
df['v'] = v
df['w'] = w

print(df)

'''
Output:

   A  u   v   w
0  1  0   0   0
1  2  9  91  92
2  3  8  81  82
3  4  7  71  72
4  5  6  61  62

'''
1
M. Abreu 26 ago. 2020 a las 22:12