質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

681閲覧

pandas iatの使い方

proteomics

総合スコア4

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/07/27 14:11

pandasのiatの使い方について疑問に思った点がございますので、教えて頂けると幸いです。

import pandas as pd df=pd.DataFrame([[1,2,3],[4,5,6]]) df2=df df2.iat[0,0]=100 print(df2.iat[0,0]) #出力は100 print(df.iat[0,0]) #出力は100

まず、dfを以上のように生成し、df2にdfを代入します。
ここで、df2の[0,0]の位置に100を代入します。
この場合、dfには何の変更も加わらないと思っていたのですが、print(df.iat[0,0])とすると100が出力されました。

これはなぜでしょうか。
基本的な質問でしたら申し訳ございません。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

参照とコピーの違いですね。
質問者さんはコピーを意図していたと思いますが、実際には参照となっていたのです。

下記サイト等を参考にコピーするコードを書いてみてください。
【Python】pandasでDataFrameの値渡しをする方法
pandas.DataFrameにおけるビューとコピー

またコピーにも浅いコピーと深いコピーがあります。
pandas.DataFrame.copy

投稿2021/07/27 14:39

meg_

総合スコア10607

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

proteomics

2021/07/27 21:56

イコールに代入以外の意味があるとは、初めて知りました。 丁寧に教えてくださりありがとうございます。
guest

0

ベストアンサー

dfには何の変更も加わらないと思っていたのですが

df2=dfでは、df2df同じモノを指すようになるからです。
詳細はなぜ list 'y' を変更すると list 'x' も変更されるのですか?を参照ください。参照先ではlistについて述べていますが、dfでも同様です。

投稿2021/07/27 14:24

can110

総合スコア38278

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

proteomics

2021/07/27 21:56

イコールに代入以外の意味があるとは、初めて知りました。 丁寧に教えてくださりありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問