我得到了一个 Pandas DataFrame,看起来像下面这样:
这个有没有更快的替代方案?
values max_val_idx
0 np.array([-0.649626, -0.662434, -0.611351]) 2
1 np.array([-0.994942, -0.990448, -1.01574]) 1
2 np.array([-1.012, -1.01034, -1.02732]) 0
df['values']
包含长度为3的numpy数组
df['max_val_idx]
包含相应数组中最大值的索引
由于每个数组的最大元素的索引已经给出,提取每个条目的最大值的最有效方法是什么?
我知道数据存储方式有点奇怪,但我不是自己创建的。由于我需要处理大量数据(约50GB,数百个以类似方式存储的拣选数据库),因此我想知道最时间有效的方法。
到目前为止,我尝试循环遍历df ['max_val_idx]
的每个元素,并将其用作在df ['values']
中找到的每个数组的索引:
max_val = []
for idx, values in enumerate(df['values']):
max_val.append(values[int(df['max_val_idx'].iloc[idx])])
这个有没有更快的替代方案?
np.max(df, axis=1)
可能比在值上应用Python内置的max
更有优势,因为numpy版本可能可以更充分地利用DataFrame的底层结构。 - Scott Colby