【发布时间】:2019-10-02 05:39:24
【问题描述】:
我有一个 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
输出:
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)
输出:
array(['qg', 'lm', 'rr'], dtype=object)
同样,我需要对col_list 中的所有项目执行此操作。我可以在 for 循环中执行此操作,但如果列表很大,这会很慢。有什么方法可以对其进行矢量化处理,这样我就可以将col_list 作为一个numpy 数组传递,结果是一个形状为(len(col_list), len(df.index)) 的numpy 二维数组。
关键是,对于大型列表,它需要快速。
【问题讨论】:
标签: python pandas numpy vectorization