首页 > 解决方案 > 将 Pandas 数据帧的行映射到 numpy 数组

问题描述

抱歉,我知道有很多与索引相关的问题,而且它可能让我很头疼,但我在这方面遇到了一些麻烦。我通常熟悉.loc.iloc.index方法和切片。该方法.reset_index可能没有(也可能无法)在我们的数据帧上调用,因此索引标签可能不按顺序排列。数据帧和 numpy 数组实际上是数据帧的不同长度子集,但对于这个例子,我将保持它们相同的大小(一旦我有一个例子,我就可以处理偏移)。

这是一张显示我正在寻找的图片: 在此处输入图像描述

我可以根据一些搜索条件从数据框中提取行列。

idxlbls = df.index[df['timestamp'] == dt]
stuff = df.loc[idxlbls, 'col3':'col5']

但是如何将其映射到行号(数组索引,而不是标签索引)以用作 numpy 中的数组索引(假设行长度相同)?

stuffprime = array[?, ?]

我需要它的原因是因为数据框更大更完整并且包含列搜索条件,但是 numpy 数组是在管道中预先提取和修改的子集(并且其中没有相同的搜索条件) . 我需要搜索数据框并从 numpy 数组中提取等效数据。基本上我需要将数据帧中的特定行与 numpy 数组的相应行相关联。

标签: pythonarrayspandasnumpy

解决方案


我会将 pandas 索引映射到 numpy 索引:

keys_dict = dict(zip(idxlbls, range(len(idxlbls))))

然后,您可以使用字典keys_dict通过 pandas 索引来寻址数组元素:array[keys_dict[some_df_index], :]


推荐阅读