inplace
のガイドラインは?例えば キーワードの引数にパンダを使用する際のガイドライン
df = df.reset_index()
または
df.reset_index(inplace=True)
同じ同じですが、違うのですか?
inplace
のガイドラインは?例えば キーワードの引数にパンダを使用する際のガイドライン
df = df.reset_index()
または
df.reset_index(inplace=True)
同じ同じですが、違うのですか?
結果のデータフレームdf
に関して、2つのアプローチは同じです。インプレースバージョンでは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
予想したように、インプレースバージョンは、より多くのメモリ効率的である
は、この設定を検討してください。一方、また、データのサイズは(上記の例ではEG)十分な大きさのアプローチの間の時間を実行中の非自明な差があるように思わ
:
%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
これらの違いもよいです使用事例(例えば、アドホック探索分析対生産コード)、データサイズ、利用可能なハードウェアリソースによっては重要ではないかもしれない。一般的に、可能な限りインプレースバージョンを使用して、メモリとランタイムの効率を向上させることをお勧めします。
'df.reset_index(inplace = True)'が返されませんfyi- – user3659451
ありがとうございました。 –
同じことです。私は、その場でデータフレームに作用しない他の行の隣に読みやすくするための最初の方法を好む。 – itzy