Как сделать векторизованную индексацию для столбца данных?(выделите ячейки с разными индексами в каждой строке векторизованным способом) - PullRequest
0 голосов
/ 14 июня 2019

У меня есть пандас, состоящий из сотен столбцов и миллионов строк.Мне нужно назначить значения для определенных ячеек по индексам столбцов различий для каждой строки.

Я пробовал петли и метод .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]
...

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

Итак, я попробовал это:

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]

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...