У меня есть строка данных pandas, как показано ниже.
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(97,123,size=(3, 4), dtype=np.uint8).view('S1'), columns=list('ABCD'))
df
Out:
A B C D
0 q g v f
1 l m u u
2 r r j w
У меня также есть список имен столбцов.
col_list = [['A'], ['A', 'B'], ['A', 'B', 'C']]
Я хочу нарезать df
и применить операцию следующим образом:
df[col_list[1]].values.sum(axis=1)
Out:
array(['qg', 'lm', 'rr'], dtype=object)
Аналогично, мне нужно выполнить эту операцию для всех элементов в col_list
.Я могу сделать это в цикле for, но это будет медленно с большим списком.Есть ли способ векторизовать это, так что я могу передать col_list
в виде массива NumPy, и в результате получается массив Numpy 2D формы (len(col_list), len(df.index))
.
Дело в том, что он должен быть быстрым длябольшой список.