0

我有一个混合数据类型的数据框,例如形状(1000、200),现在我想用一个 numpy(整数)数组形状(1000、100)分配/更新这个 df 的 100 列。

最初我所做的非常基本,例如:df.loc[:, [100 COLUMNS]] = my_np_array,但是我有运行时间限制,我的所有代码执行得越快越好。在对我的代码进行 line profiling 之后,我的代码几乎 70% 的时间都花在了这个赋值操作上,所以我继续寻找更快的方法,我遇到的唯一另一种方法是直接修改底层数组,即df.values[:, [100 COLUMN INDICES] = my_np_array. 这要快得多,我对它很满意。(如果有的话可以阐明为什么它的速度更快也会受到赞赏)

直到我发现我的数据框的值实际上没有改变,看起来如果数据框有混合dtypes 然后.values会返回一个副本而不是视图/引用,这意味着我所做的所有更改都没有应用于原始值,所以我不能只对.values. 现在我被困住了,如果有人能想出改进这个分配操作的方法,那就太好了。

(我正在考虑的一种潜在方法是从这个numpy数组创建一个单独的数据框,然后与原始df进行合并,但是我实际上需要多次执行赋值操作,所以这可能不适用于创建数据框和合并也不会太小)

4

0 回答 0