2017-02-04 6 views
0

すべてのデータフレームを更新しているようだ:は、私はこのように2つのパンダのデータフレームを構築しました

import panda as pd 
d = {'FIPS' : pd.Series(['01001', '01002']), 'count' : pd.Series([3, 4])} 
df1 = pd.DataFrame(d) 
df2 = df1 

は私がDF2内の値のいずれかを変更したいです。これは私が試したことです:

df2.loc[df2['FIPS'] == '01001','FIPS'] = '01003' 

この行はdf1とdf2の両方を更新するように見えますが、私はその理由を理解していません。

+1

Reid、以下のJanの返事があなたの質問に答えた場合は、それを回答として受け入れてください。 – zelusp

答えて

0

df2 = df1の代わりに、df2 = df1.copy()としてください。

問題は、Pythonの変数が複雑なデータ構造を割り当てるときに "ポインタ"のように機能することです。実際の値ではなく、値への参照を格納します。上のコードでは、df2はdf1の別の名前または別名になります。したがって予期しない変化。

1

df2df1の参照にすぎないためです。それらはメモリ内の同じオブジェクトを指し、異なる名前によってのみ指し示します。あなたがdf2=df1.copy()を行う場合は、輸入パンダのタイプミスを持ってit..plusそれはあなたがオブジェクトがid(df1)とに位置しているものをメモリアドレス確認し、その同じを見ることができます:)

df2ための新しいメモリと更新のみを作成する必要がありますdf2.copy()メソッドを使用すると変更されます

ようこそ!

+0

ありがとう!これは私の質問に答える。私は、変数名にデータフレームを割り当てることは、整数を割り当てることとはまったく異なっていることを知らなかった。 – Reid

+0

素晴らしい! :)あなたはそれの横にあるチェックボタンをクリックして私の答えを受け入れることができます。お楽しみにSOコミュニティ –

関連する問題