我正在寻找一种使用Pandas数据帧的内容执行计算的快速(矢量化)方法。在
我的dataframe每行包含2个标签,我想查找每个标签对应的值(从字典/列表中)并执行计算,将结果返回到dataframe中的新列。在
我在下面介绍了利用循环的工作示例。在
label1s = np.array(['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'], dtype=str)
label2s = np.array(['A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C'], dtype=str)
data = np.column_stack([label1s, label2s])
label_values = {'A':1, 'B':2, 'C':3}
df = pd.DataFrame(data=data, columns=['Label1', 'Label2'])
new_col = np.zeros_like(label1s, dtype=float)
for index, row in df.iterrows():
val1 = label_values[row['Label1']]
val2 = label_values[row['Label2']]
new_col[index] = val1 - val2
df['result'] = new_col
df
然而,对于大型数据集,循环是非常不受欢迎和缓慢的。在
有什么方法可以优化这个吗?在
我已经研究了pandas的一些功能,比如“Lookup”,但这似乎需要每个大小的数组,而在我的例子中,我需要从一个外部的列表中查找值,该列表的大小与数据帧的大小不同。在
您可以^{} 将字典扩展到所需的列,即
相关问题 更多 >
编程相关推荐