6
A
回答
5
就产生的DataFrame df
而言,这两种方法是相同的。不同之处在于(最大)内存使用率,因为就地版本不会创建DataFrame的副本。
考虑此设置:
import numpy as np
import pandas as pd
def make_data():
return pd.DataFrame(np.random.rand(1000000, 100))
def func_copy():
df = make_data()
df = df.reset_index()
def func_inplace():
df = make_data()
df.reset_index(inplace=True)
我们可以使用memory_profile
库来执行一些基准测试的内存使用情况:
%load_ext memory_profiler
%memit func_copy()
# peak memory: 1602.66 MiB, increment: 1548.66 MiB
%memit func_inplace()
# peak memory: 817.02 MiB, increment: 762.94 MiB
正如预期的那样,就地版本是更多的内存效率。
在另一方面,也似乎是在方法之间运行时间的一个非平凡差时的数据尺寸是足够大(例如,在上面的例子):
%timeit func_copy()
1 loops, best of 3: 2.56 s per loop
%timeit func_inplace()
1 loops, best of 3: 1.35 s per loop
这些差异可能或者可能并不重要,这取决于用例(例如独立探索性分析与生产代码),数据大小和可用的硬件资源。通常,尽可能使用就地版本可能是一个好主意,以获得更好的内存和运行时效率。
+0
'df.reset_index(inplace = True)'返回None fyi - – user3659451
+0
好的,谢谢指出。 –
相关问题
- 1. 我如何知道熊猫的参数和关键字参数?
- 2. Dask就地更换熊猫?
- 3. 使用地图()的关键字参数
- 4. 熊猫 - df.pipe() - 关键字不能表达
- 5. 熊猫 - 就地,视图,复制混淆
- 6. Python熊猫关键错误
- 7. 0指数产生使用熊猫
- 8. 大熊猫使用地图
- 9. 使用熊猫groupby()+ apply()与参数
- 10. 情节键数在熊猫
- 11. 熊猫集团指数
- 12. TimeDelta生成熊猫指数
- 13. 按熊猫指数绘图
- 14. 大熊猫 - 在指数
- 15. 移调多指数熊猫
- 16. 熊猫指定Lambda函数
- 17. 大熊猫根据指数
- 18. 大熊猫 - 指数值
- 19. 熊猫to_sql()将指数
- 20. 熊猫指数对象
- 21. 在指针参数上使用ref和out关键字
- 22. 使用* args和** kws指定关键字参数
- 23. 使用从字典键过滤一个数据帧大熊猫
- 24. 关键字参数
- 25. 熊猫:DataFrame.quantile axis关键字不起作用
- 26. 使用Verilog参数关键字
- 27. SEO关键字参数使用
- 28. 使用ref关键字参数?
- 29. 来自熊猫的关键错误
- 30. 连接索引和关键熊猫
同样的事情。我更喜欢第一种方式来轻松读取旁边的其他行,而这些行并不在就地处理数据帧。 – itzy