如何为数据框列进行向量化索引? (以向量化的方式选择每行上不同索引处的单元格)

时间:2019-06-14 02:23:04

标签: arrays pandas numpy dataframe indexing

我有一个由数百列和数百万行组成的熊猫数据框。我需要为每行的不同列索引处的某些单元格分配值。

我在熊猫中尝试过循环和.apply方法,但它们都不够快。所以我需要知道一种矢量化的方式来做到这一点。

首先,我有一系列的熊猫清单。看起来像这样。

0                   [116, 117, 118, 120, 121, 122, 125, 126]
1              [116, 117, 118, 120, 121, 122, 123, 124, 125]
...

您可以看到,在本系列中,每个项目都是一个由索引组成的列表。该系列中的这些项目并不相同,这意味着如果我将这些索引用作列索引来分配值,则每行将在不同位置分配单元格。这就是我想要的。

要分配给单元格的值也存储在熊猫的一系列列表中,如下所示:

0             [value1, value2, value3, value4, value5, value6, value7]
1     [value1,value2,value3,value4,value5,value6,value7,value8,value9]
...

如您所见,值列表的长度与索引列表的长度一致。包含值列表和单元格需要填充的系列位于同一只熊猫数据框中。

所以我尝试了这个:

def fill_rows(row, *args):
    row[row[index_column_index]] = row[value_column_index]

df.apply(fill_rows)

这有效,但是很慢。 (不如我预期的快几百万行)

所以我想知道是否有一种方法可以做到这一点:

df[array_of_index_lists] = df[value_column_index]

这是一种矢量化的方法,用于索引每一行的不同单元格,并使用另一列中的相应值为其分配值。非常感谢。

0 个答案:

没有答案