在单独的lis中对Pandas数据帧列值进行矢量化查找

2024-09-29 23:24:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一种使用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”,但这似乎需要每个大小的数组,而在我的例子中,我需要从一个外部的列表中查找值,该列表的大小与数据帧的大小不同。在


Tags: 数据方法dataframedf列表newdatanp

热门问题