コピーを取得したブールインデックスでDataFrameをスライスし、元のDataFrameとは独立してそのコピーを処理したいとします。パンダのデータフレームを新しいDataFrameにスライスする
answerから判断すると、ブール配列を使用して.loc
を選択するとコピーが返されますが、コピーを変更しようとすると、途中でコピーされます。これは、正しい方法だろう:あなたはboolean indexing
とcopy
、必要
import numpy as np
import pandas as pd
d1 = pd.DataFrame(np.random.randn(10, 5), columns=['a', 'b', 'c', 'd', 'e'])
# create a new dataframe from the sliced copy
d2 = pd.DataFrame(d1.loc[d1.a > 1, :])
# do stuff with d2, keep d1 unchanged
'SettingWithCopyWarning'は単なる警告です。そのDataFrameで行った変更は元のDataFrameを変更しないことを示します。それらを完全に無効にすることもできますし、割り当ての後に 'd2.is_copy = None'を使うこともできます。 – ayhan