gpt4 book ai didi

python - Pandas 截断的就地版本?

转载 作者:行者123 更新时间:2023-11-28 19:14:40 24 4
gpt4 key购买 nike

新手问题:pandas truncate 有就地版本吗?

例如

>>> df = pandas.DataFrame({'stuff':range(5)}, index=range(5))
>>> df.truncate(2,3)

返回一个新的截断数据框。我可以做

>>> df = pandas.DataFrame({'stuff':range(5)}, index=range(5))
>>> df = df.truncate(2,3)

但这似乎效率低下。有没有办法做一个更有效的截断,它不复制但就地截断?还是由于一些 super 聪明的 pandas 设计,这种效率不是问题?

请注意,截断的文档字符串说有一个复制选项,但我认为这不会影响数据框本身是否被截断,而是会影响返回值是数据框的副本还是对数据框的一部分的引用数据框。请参阅下文了解我的意思:

>>> df = pandas.DataFrame({'stuff':range(5)}, index=range(5))
>>> cp = df.truncate(2,3, copy=False)
>>> df
stuff
0 0
1 1
2 2
3 3
4 4
>>> cp['stuff'][2] = -50
>>> df
stuff
0 0
1 1
2 -50
3 3
4 4

请注意,当我们使用 copy=False 时,df 仍未被截断,但返回的对象是 df 的一部分,修改后也会修改 df。

谢谢。

最佳答案

没有就地截断,但是可以使用 copy=False 避免与制作副本相关的低效率(如果完全可以避免复制,情况并非总是如此) :

df = df.truncate(2,3, copy=False)

如您所见,如果您保留对原始对象的引用,它将保持不变。

请注意,就地操作和副本实际上是无关的。就地操作可以复制数据并更新一些内部引用,而保持对象不变的方法并不总是必须复制数据。

关于python - Pandas 截断的就地版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35228982/

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