【发布时间】:2020-01-03 18:54:42
【问题描述】:
我正在对数据科学代码进行优化,但我发现了一个缓慢的方法。我想要一些改进它的提示。现在我正在使用 43000 行的数据框进行测试,执行时间大约为 50 秒。
我已经阅读了.loc、.iloc、.at、.iat、.iterrows 和 .itertuples 方法以获得更好的数据帧迭代性能,我认为这将是这里的情况是因为该方法实际上是在 for 循环中运行的。
def slow_method(sliced_data_frame, labels_nd_array):
sliced_data_frame['column5'] = -1 # creating a new column
for label in np.unique(labels_nd_array):
sliced_data_frame['column5'][labels_nd_array == label] = label,
return sliced_data_frame
另外,我很难理解带有 [labels_nd_array == label] 的 for 循环内部发生了什么,第一条语句 sliced_data_frame['column5'] 正在选择刚刚创建的列,但下一条语句让我感到困惑。
【问题讨论】:
-
问题中的代码似乎没用。我猜你可能会得到与
sliced_data_frame['column5'] = labels_nd_array相同的结果。如果我错了,请纠正我或添加示例数据和预期结果。
标签: python pandas numpy optimization iteration