2016-09-08 10 views
3

私は3つのデータフレームdf1、df、df3を持っており、すべて元のDataframe df0をコピーしています。これが動作しないデータフレームのコピーと変更パンダ

df1=df0 
df2=df0 
df3=df0 

df1=dfo.iloc[1:,1:].div(dfo.iloc[1:,1:].sum(axis=1),axis=0) 
df2=dfo.iloc[1:,1:].div(dfo.iloc[1:,1:].sum(axis=1),axis=0)*ACCOUNT_CASH 
df3=df2//df0 

print(df1) 
print(df2) 
print(df3) 

はどういうわけか、私はエラーを取得していないが、私はDF1、DF2 DF3を印刷するとき、すべての私のデータフレームは同じです!しかし、それらはdf0とは異なります。なぜなら、それらはすべてメモリ内の同じ領域を指しているからです。したがって、ポインタを変更すると実際にはすべての変数が変更されますか?もしそうなら、どのようにしてうまく動作させることができますか?私は、決定的でない結果を伴うコピー(深度=真)を試みた。おかげ

答えて

2

あなたの行は

df1=df0 
df2=df0 
df3=df0 

単に3人の新しい名前がdf0によって拘束されるような同じオブジェクトを参照してください3つの新しいバインディングを作成します。実際にコピーを作成する

pd.DataFrame.copyを使用します。

df1=df0.copy() 
df2=df0.copy() 
df3=df0.copy() 
+0

を、これはそれを解決!なぜコピー(deep = True)がうまくいかなかったのかを説明してもらえますか?ありがとう – uniXVanXcel

+0

@Pythus興味深い - 私はそれを見ていきます(少し後で、私は恐れます)。 –

関連する問題