全部
我目前正在计算一系列正方形熊猫DataFrame对象,作为自举算法的一部分,尽管我可以正确地计算出它,但到目前为止,有效地计算它仍然使我难以捉摸。
当前,使用函数 func 按如下方式计算数据帧:
frame = pandas.DataFrame(0, index=idx, columns=idx)
for row in idx:
for col in idx:
frame.loc[row, col] = func(row, col)
不幸的是,构建的平方矩阵可能会变得非常大(最多1万个单元),因此上述操作可能会非常缓慢。有没有什么方法比使用pandas和/或numpy的嵌套循环方法更有效地执行此构造?
答案 0 :(得分:0)
在NumPy中应该更快,并且您可以使用嵌套列表推导而不是显式循环:
import numpy as np
# example function
def func(i, j):
return 10 * i + j
# example index
idx = [0, 1, 2, 3]
frame = np.array([[func(row, col) for col in idx] for row in idx])
frame
array([[ 0, 1, 2, 3],
[10, 11, 12, 13],
[20, 21, 22, 23],
[30, 31, 32, 33]])
您当然可以根据需要将结果转换为DataFrame:
import pandas as pd
frame = pd.DataFrame(frame)