微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

熊猫的Dataframe C或Fortran排序

如何解决熊猫的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 举报,一经查实,本站将立刻删除。