2016-08-08 10 views
0

Pythonについての私の理解によれば、データへの変更可能な参照は、関数スコープ内で変更され、変更が外部に反映されます。ただし、以下の行動は私を混乱させる:dataframe appendが関数スコープ外に表示されない

1)リストを考えてみましょう:

my_list = [] 
def checklistappend(list): 
    list.append(1) 
checklistappend(my_list) 
print (my_list) 

変数my_listというは= [1]

2)しかし、データフレームで次のシナリオを検討してください期待通り:

my_df = pd.DataFrame(columns=['A']) 
def checkdfappend (df): 
    df.append([1]) 
checkdfappend(my_df) 
print(my_df) 

この場合、my_dfの結果はまだ非直感的な列 'A'を持つ空のデータフレームであり、私が考えることができる唯一の説明はtです彼はデータフレーム追加メソッドは、私が期待しない動作である新しい変数に内部的に割り当てます。

私はpython 2.7.2 with pandas 0.13.1を使用していますが、いずれかが私のコントロールに含まれていません。

非常に多くのコピーを作成せずに同じ目的を達成する別の方法はありますか?

+0

愚かな質問かもしれませんが、機能を試してみましたか?私はmy_df direcltyに適用することを意味します –

+1

[append](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.append.html)はインプレース操作ではありません。新しいデータフレームを返します。実際にはオブジェクトを変更していません。 – ayhan

答えて

0

dfに出力を割り当てる必要があります。

df = df.append([1]) 
関連する問題