设定:
a = np.array([4, 2, 7, 8])
v = df.Group.values
dct = {}
选项1
使用numpy索引. (此解决方案假定您的组范围是0-N:
dct['numpy_indexing'] = a[v]
选项2
使用np.repeat. (此解决方案假定您的组没有隔行扫描):
dct['numpy_repeat'] = np.repeat(a, np.bincount(v))
选项3
使用地图.这种方法将比其他方法慢一些,但是更灵活一些,因为它允许交错组和非线性组:
d = dict(zip(np.unique(v), a))
dct['pandas_map'] = df.Group.map(d)
输出量
df.assign(**dct)
ID Group numpy_indexing numpy_repeat pandas_map
0 0 0 4 4 4
1 1 0 4 4 4
2 2 1 2 2 2
3 3 1 2 2 2
4 4 1 2 2 2
5 5 2 7 7 7
6 6 2 7 7 7
7 7 3 8 8 8