Me gustaría concatenar los siguientes dos conjuntos de datos. Cualquier ayuda sería apreciada por favor.

1er dato total_pos:

1170050176.9395077

2do dato p:

0    -0.000844
1    -0.002487
2    -0.004132
3    -0.006029
4    -0.004442
Length: 5, dtype: float64

La salida que deseo:

0    1170050176.9395077
1    -0.000844
2    -0.002487
3    -0.004132
4    -0.006029
5    -0.004442
Length: 6, dtype: float64

Mi código:

p = np.concatenate([total_pos,p])

El error:

   p = np.concatenate([total_pos,p])
  ValueError: zero-dimensional arrays cannot be concatenated
1
mama dede 2 oct. 2019 a las 11:19

3 respuestas

La mejor respuesta

O usando numpy.hstack:

arr = np.hstack([total_pos, s])
# or into series
s = pd.Series(np.hstack([total_pos, s]))

Salida:

array([ 1.17005018e+09, -8.44000000e-04, -2.48700000e-03, -4.13200000e-03,
       -6.02900000e-03, -4.44200000e-03])
1
Chris 2 oct. 2019 a las 08:31

Ambas soluciones que proponen se basan en Series .append: añade un elemento a tu serie pero debe ser del tipo de serie.

Primera solución: Propuesto por @jezreal, agregue ignorando los índices, de esta manera el índice de el nuevo elemento se calcula automáticamente

Segunda solución: especifique el valor del índice:

s=pd.Series([11,22,33])
new_index = [str(s.index[-1] + 1) + 'b'] # you may need to specify a particular index for the new series, in this case calculate the value following the last index
s = s.append(pd.Series(44, index=new_index))

0     11
1     22
2     33
3b    44

Si desea transformar la serie utilizada en una matriz numpy, simplemente haga:

arr = np.array(s)
# output: array([11, 22, 33, 44])
0
Massifox 2 oct. 2019 a las 08:47

Utilice Series.append con convertir escalar a un elemento Series:

p = pd.Series([total_pos]).append(p, ignore_index=True)
print (p)
0    1.170050e+09
1   -8.440000e-04
2   -2.487000e-03
3   -4.132000e-03
4   -6.029000e-03
5   -4.442000e-03
dtype: float64

Su solución funciona si convierte escalar a una lista de elementos:

a = np.concatenate([[total_pos],p])
print (a)
[ 1.17005018e+09 -8.44000000e-04 -2.48700000e-03 -4.13200000e-03
 -6.02900000e-03 -4.44200000e-03]

Para Series agregar constructor:

s = pd.Series(np.concatenate([[total_pos],p]))
0
jezrael 2 oct. 2019 a las 08:50
58197739