gpt4 book ai didi

python - 更改 Pandas 数据框列顺序

转载 作者:太空狗 更新时间:2023-10-30 01:22:09 27 4
gpt4 key购买 nike

是否可以就地更改数据框中列的顺序?

如果是,那会比制作副本更快吗?我正在处理一个包含 1 亿多行的大型数据框。

我看到了如何使用副本更改顺序: How to change the order of DataFrame columns?

最佳答案

如果不制作副本,他们很难做到这一点。从理论上讲,如果您只有一个数据类型(或者只在标签更改数据类型的范围内更改列),则可以这样做。但是相当复杂,因此没有实现。

就是说,如果您小心的话,您可以做到这一点。你应该只用一个单一的 dtyped 框架来做这个(你被预先警告)。

In [22]: df = DataFrame(np.random.randn(5,3),columns=list('ABC'))

In [23]: df
Out[23]:
A B C
0 -0.696593 -0.459067 1.935033
1 1.783658 0.612771 1.553773
2 -0.572515 0.634174 0.113974
3 -0.908203 1.454289 0.509968
4 0.776575 1.629816 1.630023

如果 df 是多类型的,那么 df.values 将不是一个 View (当然你可以子选择单类型框架,它本身就是一个 View )。另一个注意事项,这并不总是可能将其作为 View 显示出来。这取决于你在做什么,YMMV。

例如df.values.take([2,0,1],axis=1) 为您提供相同的结果,但只是一个副本。

In [24]: df2 = DataFrame(df.values[:,[2,0,1]],columns=list('ABC'))

In [25]: df2
Out[25]:
A B C
0 1.935033 -0.696593 -0.459067
1 1.553773 1.783658 0.612771
2 0.113974 -0.572515 0.634174
3 0.509968 -0.908203 1.454289
4 1.630023 0.776575 1.629816

我们对原始值有看法

In [26]: df2.values.base
Out[26]:
array([[ 1.93503267, 1.55377291, 0.1139739 , 0.5099681 , 1.63002264],
[-0.69659276, 1.78365777, -0.5725148 , -0.90820288, 0.7765751 ],
[-0.45906706, 0.61277136, 0.63417392, 1.45428912, 1.62981613]])

请注意,如果您随后分配给 df2(例如另一个浮点列),您将触发一个副本。所以你必须非常小心。

也就是说,从另一帧的 View 创建几乎不占用内存,只是一个指针,速度非常快。

关于python - 更改 Pandas 数据框列顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25878198/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com