首页 > 解决方案 > 使用 Pandas read_csv 将多列作为数组字段读取

问题描述

我正在读取一个 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 
....

以前我通过定义数据的 dtype 使用 genfromtxt 使用 Numpy 管理这个:

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

然后使用该 dtype 调用 numpy genfromtxt:

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

这给了我一个 Numpy 结构化数组,其中包含“Date”、“Val”、“Fruit”和“ValArray”字段,其中“ValArray”是一个数组数组。


现在我想使用 Pandas read_csv 执行相同的过程,但我发现它不像 Numpy 那样使用 dtype。

我定义了一个适合 Pandas 的 dtype:

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 标签命名字段。

在熊猫中可以做到这一点吗?

标签: pythonpandascsvnumpy

解决方案


推荐阅读