2013-08-11 8 views
22

データフレームがあるdf1複数の列と行があります。簡単な例:別のデータフレームのインデックスを持つ空のデータフレームを作成する

TIME T1 T2 
     1 10 100 
     2 20 200 
     3 30 300 

私は空のデータフレームDF2を作成したいと後で、計算結果を新しい列を追加したいです。

この瞬間のために私のコードは次のようになります。二つの新しい列を追加...

 df1=pd.read_csv("1.txt",index_col="TIME") 

    df2=df1.copy()[[]] #copy df1 and erase all columns 

 df2["results1"],df2["results2"]=df1["T1"]*df["T2"]*3,df1["T2"]+100 

これを行うには、任意のより良い/より安全な/より高速な方法はありますか? 空のデータフレームdf2を作成し、df1からインデックスのみをコピーできますか?

答えて

33
df2 = pd.DataFrame(index=df1.index) 

これにより、列はなくインデックスのみのDataFrameが作成され、df1と同じインデックスになります。それはdf1.index.copyとしてインデックスを設定すると良いでしょう

+0

ているかどうかを確認することdf2.indexです。コピー();それ以外の場合は、df1とdf2は同じインデックスオブジェクトを共有します – waitingkuo

+2

インデックスはこのため正確に変更できません。 –

+3

df2.index.name = 'test'を設定している間は、df1のインデックスもその名前を取得します。 – waitingkuo

2

()

df2 = pd.DataFrame(index=df1.index.copy()) 

あなたはdf1.indexを使用することができますそれはdf1.indexとして設定された指標はましだ、彼らは同じオブジェクト

+5

不要なインデックスのコピーを作成する索引は、この理由から、変更できない恐れなしに異なるデータ構造間でそれらを共有できるように、正確には変更できません。 –

関連する問題