python - 在熊猫中计算方形数据框的最有效方法
问题描述
全部,
我目前正在计算一系列方形 pandas 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)
不幸的是,构建的方阵最终可能会非常大(最多 10k 个单元),因此上述运行可能会非常缓慢。有什么方法可以比使用 pandas 和/或 numpy 的嵌套循环方法更有效地执行此构造?
解决方案
在 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)
推荐阅读
- nsis - NSIS 安装程序运行批处理文件
- javascript - 元素从 DOM 中消失了,但是,条件语句在使用变量时仍然可以看到元素
- python - 两个二进制表示的交叉
- python - 通过使用正则表达式匹配在两个字符串之间选择文本
- c++ - 循环和数组有问题
- discord-jda - 禁止命令不起作用 JDA 请帮助调试和一切
- python - 在 Tensorflow Keras 中跳过一个时期的权重
- tensorflow - 为什么 2070 Max-Q 训练神经网络的时间比 GTX 960m 长?
- javascript - Next.js v10 内部化 - getStaticProps 始终返回默认语言环境
- mysql - VARCHAR 列的索引大小