Чтение нескольких столбцов как поля массива с помощью Pandas read_csv

#python #pandas #csv #numpy

#python #pandas #csv #numpy

Вопрос:

Я читаю файл csv и хочу импортировать последние 3 столбца в виде массива.

Данные выглядят примерно так:

 01/01/2020,   100.5,  Apple,   0.1,  0.2, 0.3 
02/01/2020,   373.0,  Banana,  7.5,  6.6, 2.1 
03/01/2020,   552.9,  Orange,  8.0,  1.2, 7.5 
....
  

Ранее я справлялся с этим с помощью Numpy, используя genfromtxt, определяя dtype данных:

 mydtype = np.dtype([('Date', 'a10'),('Val', 'f8'),('Fruit', 'a10'),('ValArray', '3f8')
  

затем вызов numpy genfromtxt с использованием этого dtype:

 Data = np.genfromtxt('My input file', dtype=mydtype, delimiter=',', autostrip=True)
  

Это дало мне Numpy структурированный массив с полями ‘Date’, ‘Val’, ‘Fruit’ и ‘ValArray’, где ‘ValArray’ — это массив массивов.


Теперь я хотел бы выполнить тот же процесс, используя Pandas read_csv, но я обнаружил, что он не использует dtype таким же образом, как Numpy.

Я определил dtype, подходящий для Pandas:

 myPandasdtype = {'Date': 'a10','Val':'f8','Fruit': 'a10', 'ValArray':'3f8'}
  

и использовал Pandas read_csv как:

 PData = PD.read_csv('My input file', dtype=myPandasdtype , sep=',',  header=None)
  

но обнаружил, что Pandas выдал мне фрейм данных, содержащий индекс даты, поле с плавающей точкой, строковое поле и еще три поля с плавающей точкой.

Однако я хотел бы, чтобы последние три поля с плавающей запятой считывались как массив из трех значений с плавающей запятой и чтобы поля именовались с использованием меток dtype.

Возможно ли это сделать в Pandas?