如何解决熊猫的Dataframe C或Fortran排序
我想创建熊猫数据框,并能够以优化的代码(数字)操作它们。
大多数优化的代码将采用序列或数据框输入,并将结果存储在预分配的输出中。
@njit
def calc(u,v,w):
for i in range (w.shape[0]):
w[i] = some_f(u[i],v[i])
其中some_f
是占位符,用于可能带有测试和循环的复杂操作,因此使用numba。最重要的是,我要避免在此过程中浪费数据。
对于上述矢量化函数,我想对序列和数据帧使用相同的代码。
因此对于系列u,v,w,我将使用:
calc(u.values,v.values,w.values)
对于数据框,我想到了与...重复使用相同的功能
calc(u.values.reshape(-1),v.values.reshape(-1),w.values.reshape(-1))
这仅在以下情况下有效
- 在三个数据框中,数据框(C或Fortran)的数组顺序是一致的
- 向reshape方法传递与原始数据帧顺序匹配的参数order ='C'或'F',否则将进行复制。
熊猫似乎对数据框排序没有一致的政策。
例如,构造函数
df=pandas.Dataframe(index=...,columns=...,data=0.0)
将返回一个C排序数组。虽然
df.copy()
将被Fortran订购。
我想知道这里的某些人是否遇到过类似的问题,并找到了一种一致的方法来确保数据帧始终保持相同的顺序(C或Fortran),而不会使普通的熊猫代码过于混乱。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。