El paso de argumentos de matriz a mi propia función 2D aplicado sobre pandas GroupBy

votos
1

Me da la siguiente trama de datos pandas

df
                         long       lat  weekday  hour
dttm                                                  
2015-07-03 00:00:38  1.114318  0.709553        6     0
2015-08-04 00:19:18  0.797157  0.086720        3     0
2015-08-04 00:19:46  0.797157  0.086720        3     0
2015-08-04 13:24:02  0.786688  0.059632        3    13
2015-08-04 13:24:34  0.786688  0.059632        3    13
2015-08-04 18:46:36  0.859795  0.330385        3    18
2015-08-04 18:47:02  0.859795  0.330385        3    18
2015-08-04 19:46:41  0.755008  0.041488        3    19
2015-08-04 19:47:45  0.755008  0.041488        3    19

También tengo una función que recibe como entrada 2 arrays:

import pandas as pd
import numpy as np

def time_hist(weekday, hour):
    hist_2d=np.histogram2d(weekday,hour, bins = [xrange(0,8), xrange(0,25)])
    return hist_2d[0].astype(int)

Deseo solicitar mi función de 2D a todos y cada grupo de la siguiente GroupBy:

df.groupby(['long', 'lat'])

He intentado pasar a args * .apply ():

df.groupby(['long', 'lat']).apply(time_hist, [df.weekday, df.hour])

pero consigo un error: La dimensión de contenedores debe ser igual a la dimensión de la muestra x.

Por supuesto, las dimensiones falta de coincidencia. La idea es que no sé de antemano qué los mini [lunes a viernes, hora] arreglos para enviar a todos y cada grupo.

¿Cómo puedo hacer eso?

Publicado el 28/06/2017 a las 10:04
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
1

Hacer:

import pandas as pd
import numpy as np

df = pd.read_csv('file.csv', index_col=0)


def time_hist(x):
    hour = x.hour
    weekday = x.weekday
    hist_2d = np.histogram2d(weekday, hour, bins=[xrange(0, 8), xrange(0, 25)])
    return hist_2d[0].astype(int)


print(df.groupby(['long', 'lat']).apply(time_hist))

Salida:

long      lat     
0.755008  0.041488    [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...
0.786688  0.059632    [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...
0.797157  0.086720    [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...
0.859795  0.330385    [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...
1.114318  0.709553    [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...
dtype: object
Respondida el 28/06/2017 a las 10:16
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more