Добавление вектора строк в новый фрейм данных добавляет имена заголовков, но не значения

#python #pandas

#python #pandas

Вопрос:

У меня есть фрейм данных, такой как;

 0        0.1912
1        0.3597
2        0.3597
3        0.3597
4        0.3597
5        0.3597
6        0.2739
7        0.1641
8        0.0776
      .
      .
      .
  

Прежде всего, я переношу его в вектор строк. После этого это выглядит следующим образом;

       0       1       2       3      ...   18933   18934   18935   18936
ecg  0.1912  0.3597  0.3597  0.3597  ...  0.3847  0.3847  0.3847  0.3847
  

Итак, как вы видите, номера индексов теперь являются именами заголовков столбцов. Допустим, я сохранил приведенный выше вектор строк в переменной с именем row_vector . После этого я хочу добавить этот вектор строк в другой фрейм данных, подобный этому;

 df = pd.DataFrame({'ecg':[row_vector]}) #ecg is used to be a header name for the row vector
  

Когда я это делаю, это добавляет вектор строк в этот новый фрейм данных, но неправильным способом;

                                                  ecg
0        0       1       2       3      ...   190...
  

Как вы видите, он добавил «имена заголовков» вектора строк, а не реальные значения под этими именами заголовков. Я хотел бы получить такой результат;

                                                                       ecg
0  0.1912  0.3597  0.3597  0.3597  ...  0.3847  0.3847  0.3847  0.3847 ...
  

Итак, как я могу это исправить? Заранее спасибо…

Комментарии:

1. row_vector.values ?

2. Ну да, ответ настолько прост. Спасибо.

3. Я включил это в качестве ответа, поскольку не смог найти прямой дубликат. Рад, что исправлено!

Ответ №1:

Вы можете использовать .values or .to_numpy (новый в версии 0.24) методы объекта series для доступа к его значениям. Смотрите пример ниже.

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

print(df['A']) # prints indexs and values
  

С принтами:

 0    0
1    1
2    2
3    3
4    4
5    5
Name: A, dtype: int64
  

в то время как вы можете просто получить доступ к значениям:

 print(df['A'].to_numpy())
  

выводит на экран:

 [0 1 2 3 4 5]
  

Обратите внимание, документация для .values поставляется с предупреждением:

Предупреждение Мы рекомендуем использовать Series.array или Series.to_numpy(), в зависимости от того, нужна ли вам ссылка на базовые данные или массив NumPy.

поэтому я бы использовал .to_numpy метод.