【发布时间】:2018-07-28 14:29:43
【问题描述】:
我正在寻找一种使用 Pandas 数据帧的内容执行计算的快速(矢量化)方法。
我的数据框每行包含 2 个标签,我想查找与每个标签对应的值(从字典/列表中)并执行计算,将结果返回到数据框中的新列。
我在下面使用循环包括我的工作示例。
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 功能,例如“查找”,但这似乎需要每个大小的数组,而在我的情况下,我需要从外部列表中查找值,并且与数据框大小不同。
【问题讨论】:
标签: python pandas dataframe optimization vectorization