2016-04-08 16 views
2

これは初心者のpythonの質問の多くです。私は、データの異なる時間範囲を抽出するために、次のように3つの日時の入力を使用してスライスパンダのデータフレームtmp_dfを有し:そしてタイムスライスを使用したPython変数の割り当て

tmp_daily_df = tmp_df.loc[idx[daily[1]:daily[2]],:] 
tmp_weekly_df = tmp_df.loc[idx[weekly[1]: weekly[2]],:] 
tmp_monthly_df = tmp_df.loc[idx[monthly[1]: monthly[2]],:] 

I種々の統計および実行を算出compute_stats()と呼ばれる関数に得られた3つのデータフレームを渡し入力データフレームに対するいくつかの操作(すなわち、tmp_daily_df)。そのような操作はcompute_statsに2番目と3番目のコールが操作によって破壊されるのpython変数の割り当ては、より多くの私は思ったんだけどコピーよりリンケージのように動作するので私の質問があるなどtmp_daily_df

final_daily_df = compute_stats(tmp_daily_df, 'M','').reset_index(drop=True) 
final_weekly_df = compute_stats(tmp_weekly_df, 'M','').reset_index(drop=True) 
final_monthly_df = compute_stats(tmp_monthly_df, 'M','').reset_index(drop=True) 

をいくつかの新しい列を追加していますtmp_daily_dfは、tmp_weekly_dfおよびtmp_monthly_dfによって参照されるtmp_dfのタイムスライスである。リストをスライス

答えて

1

は、言い換えれば、コピーを作成します。

new_list = l[:] 

と同等です:データフレームは、しかし少し異なる動作

new_list = list(l) 

dataframes copies vs views

DataFrame.locは、スカラーインデックス/スライスで使用するとビューを返します。これによると

ラベルの配列またはブールベクトルは、インデックス操作に関与しているときはいつでも、結果がコピーされます。単一ラベル/スカラーインデックスおよびスライス、例えば、 df.ix [3:6]またはdf.ix [:, 'A']を押すと、ビューが返されます。

ラベルまたはブール値ベクトルの配列を使用しない限り、ビューが表示されます。 コピーメソッドを使用すると、目的の結果が得られます。

+0

これはデータフレームをスライスするのと同じですか? – codingknob

+0

申し訳ありませんが、私はその点を逃しました。それに応じて編集された回答。 –

関連する問題