使用指南是inplace
什么?
例如,
df = df.reset_index()
要么
df.reset_index(inplace=True)
相识又有差别?
就生成的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
根据用例(例如,特殊探索性分析与生产代码),数据大小和可用的硬件资源,这些差异可能会也可能不会很大.通常,尽可能使用就地版本以获得更好的内存和运行时效率可能是个好主意.