pythonを勉強しており、データフレームでの要素の扱いについて
疑問が生じたためお伺いさせていただきました。
データフレームで特定のカラムをリストとして抽出してのち、
そのリストの要素に変更を加えると元のデータフレームの要素まで変更されるのはどうしてなのでしょうか。
実行環境は以下になります。
Python 3.7.13
Windows10
google colab
文面では非常に分かりづらいとも思いますので、以下にサンプルコードを記載いたします。
下記のコードを実行しますと最初のデータフレームは1枚目の画像のようなデータフレーム、
二番目のデータフレームは2枚目の画像となります。
python
1!pip install pandas 2import pandas as pd 3df = pd.DataFrame( 4 data = [['x', 'y', 'z'], 5 [10, 20, 30], 6 [100, 200, 300]] 7) 8 9df #最初のデータフレーム 10 11lists = df[0].values 12print(type(lists)) 13 14for i in range(len(lists)): 15 if lists[i] == 10: 16 lists[i] = lists[i] + 100000 17 18df #二番目のデータフレーム
ここで私としては最初のデータフレームからカラム「0」をリストとして抽出して、
そのリストの中にある10に対して100000を足したという認識であって、
最初のデータフレームに対して変更を加えたという認識はありません。
しかし、二番目のデータフレーム(実際には最初のデータフレームを再表示)しますと、
10であった要素が100010に変更されています。
これはどういう処理で上記の現象が起きているのでしょうか。
データフレームから抽出したリストのデータ型がnumpy.ndarray型であると相互作用のような形になるのでしょうか。
稚拙な質問かとは思いますが、教えて頂けますと幸いです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/06/02 13:59