pandas SettingWithCopyWarning
パンダを使って zが50未満の場合、zは0になる. の場合、 各は、個別のイベントと見なされる. コピーに割り当てを実行するため、dfは元の計画通りに変更されません.
2 の場合、dfが呼び出されたビューが変更されたと考えられる.
DataFrame copyも発生しないため、時間とメモリの面でより有利です. そのため、チェーンインデックスを通常使用するよりも reference https://realpython.com/pandas-settingwithcopywarning/ https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
SettingWithCopyWarning
が発生しました./usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:1: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
"""Entry point for launching an IPython kernel.
Example
data = {"x": 2**np.arange(5),
"y": 3**np.arange(5),
"z": np.array([45, 98, 24, 11, 64])}
index = ["a", "b", "c", "d", "e"]
df = pd.DataFrame(data=data, index=index)
df
x y z
a 1 1 45
b 2 3 98
c 4 9 24
d 8 27 11
e 16 81 64
chained indexing(df[][]).
df[df['z']<50]['z'] = 0
df[df['z']<50]
を使用してデータ・フレーム・コピーを作成し、このデータ・フレームを使用して「z」列を検索して割当てを実行します.df.loc[行選択、列選択]
df.loc[df['z']<50,'z']
を使用すると、dfは予想通りに変更されます..loc
を使用することをお勧めします. Reference
この問題について(pandas SettingWithCopyWarning), 我々は、より多くの情報をここで見つけました https://velog.io/@mycogno/pandas-SettingWithCopyWarningテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol