Как создать столбец фрейма данных pandas, используя список numpy nd-массивов?

#python #pandas #numpy

#python #pandas #numpy

Вопрос:

У меня есть 2 списка numpy nd-массива размером 2 и 1 соответственно. Я хочу создать фрейм данных pandas, используя 2 списка, являющиеся 2 столбцами моего фрейма данных. Я делаю следующее —

 
Mfcc = np.arange(1,11,1)
Mfcc =  np.reshape(Mfcc, (-1, 2))
Mel_spec = np.arange(1,10,2)

df = pd.DataFrame(list(zip(Mfcc, Mel_spec)), 
               columns =['mfcc', 'mel_spectogram'])   ### mfcc is 2d and mel_spectogram is 1d
                   
type(df.mfcc[1])   ### returns string, when it should return a 1d array
type(df.mel_spectogram[1])   ### returns string, when it should return float being the first element of the array

  

Как я могу этого добиться и где я, возможно, допускаю ошибку?

Ответ №1:

 import numpy as np
import pandas as pd

Mfcc = np.arange(1,11,1)
Mfcc =  np.reshape(Mfcc, (-1, 2))
Mel_spec = np.arange(1,10,2)

df = pd.DataFrame({'mfcc': list(Mfcc), 'mel_spectogram': Mel_spec})

df.mfcc[1], df.mel_spectogram[1]
  

Этот код работает исправьте свои Mfcc и Mel_spec в соответствии с этим

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

1. Привет, спасибо за ваш ответ, но, к сожалению, у меня это тоже не работает. Попробуйте сохранить csv и после загрузки csv, type(df.mel_spectogram[1]) по-прежнему является строкой, когда я хочу, чтобы это был np nd-массив.

2. Эй, to_csv не сможет удерживать типы данных здесь. Попробуйте to_pickle, а затем прочитайте его как read_pickle .

3. Также, задавая вопрос, пожалуйста, укажите все ваши требования. Поскольку вы не упомянули, что вы сбрасываете его и снова считываете из CSV. @SoumyaRanjanSahoo

4. Правильно. Я получил эту работу, выполнив сериализацию с помощью pickle, но это не очень экономичный подход, и поэтому мне нужна была помощь в написании фрейма данных. В любом случае спасибо 🙂