Объединить скаляр с пандами серии - PullRequest
1 голос
/ 02 октября 2019

Я хотел бы объединить следующие два набора данных. Буду признателен за любую помощь, пожалуйста.

1-е данные total_pos:

1170050176.9395077

2-е данные p:

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

Вывод, который я желаю:

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

Мой код:

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

Ошибка:

   p = np.concatenate([total_pos,p])
  ValueError: zero-dimensional arrays cannot be concatenated

Ответы [ 3 ]

1 голос
/ 02 октября 2019

Или используя numpy.hstack:

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

Выход:

array([ 1.17005018e+09, -8.44000000e-04, -2.48700000e-03, -4.13200000e-03,
       -6.02900000e-03, -4.44200000e-03])
0 голосов
/ 02 октября 2019

Оба решения, которые они предлагают, основаны на Series.append : добавьте элемент к вашей серии, но он должен быть типа серии.

Первое решение: Предложено @ jezreal , добавить, игнорируя индексы, таким образом, индекс нового элемента вычисляется автоматически

Второе решение: Пожалуйста, укажите значение индекса:

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

Если вы хотите преобразовать ряд, используемый в массиве numpy, просто выполните:

arr = np.array(s)
# output: array([11, 22, 33, 44])
0 голосов
/ 02 октября 2019

Использование Series.append с преобразованием скаляра в один элемент 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

Ваше решение работает, если преобразовать скаляр в один список элементов:

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]

Для Series добавить конструктор:

s = pd.Series(np.concatenate([[total_pos],p]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...